当前位置: 首页 > 知识库问答 >
问题:

将字符串日期从json转换为Java LocalDate

何雅惠
2023-03-14

我使用Spring靴和Spring4。

@EntityScan(basePackageClasses = {ServerApplication.class, Jsr310JpaConverters.class})
@SpringBootApplication
@EnableCaching
public class ServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServerApplication.class, args);
    }
}

我尝试使用Java 8 LocalDate。

在json中输入日期

出生日期:“1969-12-29”

在服务器端这个领域我有

@DateTimeFormat(iso=DateTimeFormat.ISO.DATE)
private LocalDate birthdate;

我得到这个错误

组织。springframework。http。转换器。HttpMessageNoteableException:无法读取文档:无法从字符串值('1969-12-29')实例化类型为[简单类型,类java.time.LocalDate]的值;没有单字符串构造函数/工厂方法

编辑

通过ajax发送数据

public class LodgerInformationDto {
    private Long lodgerId;
    private String firstName;
    private String lastName;
    @DateTimeFormat(iso=DateTimeFormat.ISO.DATE)
    private LocalDate birthdate;
}

控制器静止类

    @RequestMapping(value = "/lodgers", method = RequestMethod.POST)
    public LodgerInformationDto createLodger(@RequestBody @Valid final LodgerInformationDto lodgerDto) {
        return lodgerService.save(lodgerDto);
    }

使用此依赖项:com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.6.3

application.properties中的这一行spring.jackson.serialization.write时间戳=false

这项工作。

共有1个答案

巩阳秋
2023-03-14

DateTimeFormat用于模型属性(命令对象),而不是JSON主体。

根据你的问题,

在json中输入日期

您似乎将日期作为请求正文的一部分以JSON的形式提交。

处理JSON反序列化的过程完全不同。通常,这是一个映射Jackson2HttpMessageConverter的映射,假设类路径上有Jackson。

为了让它与Jackson一起工作,您需要一个支持Java 8类型的模块。有这个和这个。他们知道如何将JSON内容反序列化为Java 8日期时间类型。

您可以使用@JsonFormat来提供日期格式

 类似资料:
  • 问题内容: 将日期转换为JSON时,javascript会以以下格式保存日期: 但是,我不确定如何将其放入python datetime对象。我已经尝试过这些: 我相信javascript会将字符串保存为官方ISO格式,因此似乎应该有一种方法可以让python 读取它? 问题答案: 请尝试以下格式: 例如: 该的日期只是手段,它应该被解释为UTC时间,所以忽略它不会造成任何信息丢失。您可以在这里找

  • 问题内容: 是否可以将“ 20110210”转换为2011-02-10? 我试过,我得到 我究竟做错了什么? 我有新的SimpleDateFormat(“ yyyy-MM-dd”)而不是新的SimpleDateFormat(“ yyyyMMdd”) 问题答案: 这对我有用,不会引发异常:

  • 我正在尝试转换一个表示存储在SQLite中的日期的字符串。 日期存储到sqlite中,如下所示: 根据Java文档,方法: 返回此日期的字符串表示形式。格式设置相当于使用具有格式字符串“eee MMM dd hh:mm:ss zzz yyyy”的SimpleDateFormat,看起来类似于“tue Jun 22 13:07:00 PDT 1999”。则使用当前默认时区和区域设置。如果需要控制时区

  • 问题内容: 该java.util.Date 方法显示当地时区的日期。 在几种常见的情况下,我们希望以UTC格式打印数据,包括日志,数据导出以及与外部程序的通信。 在UTC中创建String表示形式的最佳方法是什么? 如何用更好的格式替换无法排序的juDate 格式(感谢@JonSkeet!)? 附录 我认为以自定义格式和时区打印日期的标准方法非常繁琐: 我一直在寻找像这样的单线: 问题答案: 遵循

  • 问题内容: 我想要这种格式 问题答案: 您需要先 解析 日期字符串(使用方法),才能 使用与格式匹配的格式获取对象。 然后使用所需的格式来 格式化 Date对象(Use 方法)以获取字符串。 输出:- 第一种格式是RFC 822 TimeZone与您的日期字符串匹配。有关在日期格式中使用的其他各种选项,请参见。

  • 查询:{“日期”:{“$GTE”:“2021-07-22T03:00:00”,“$LTE”:“2021-07-23T03:00:00”},“isdeleted”:false},字段:{},排序:{} 将字符串转换为数据格式,如下所示,我只得到时间戳 DateFormat originalFormatData=new SimpleDateFormat(“yyyy-mm-dd't'hh:mm:ss”,