Spring Boot 中的 JSON Java 8 LocalDateTime 格式

新手上路,请多包涵

我在我的 Spring Boot 应用程序中格式化 Java 8 LocalDateTime 时遇到了一个小问题。使用“正常”日期我没有问题,但 LocalDateTime 字段将转换为以下内容:

 "startDate" : {
    "year" : 2010,
    "month" : "JANUARY",
    "dayOfMonth" : 1,
    "dayOfWeek" : "FRIDAY",
    "dayOfYear" : 1,
    "monthValue" : 1,
    "hour" : 2,
    "minute" : 2,
    "second" : 0,
    "nano" : 0,
    "chronology" : {
      "id" : "ISO",
      "calendarType" : "iso8601"
    }
  }

虽然我想把它转换成类似的东西:

 "startDate": "2015-01-01"

我的代码如下所示:

 @JsonFormat(pattern="yyyy-MM-dd")
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
public LocalDateTime getStartDate() {
    return startDate;
}

但是上述任何一个注释都不起作用,日期的格式一直像上面那样。欢迎提出建议!

原文由 Erik Pragt 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 566
2 个回答

更新:Spring Boot 2.x 不再需要此配置。我在 这里写了一个更新的答案


(这是在 Spring Boot 2.x 之前的做法,它可能对使用旧版本 Spring Boot 的人有用)

我终于在 这里 找到了如何去做。要修复它,我需要另一个依赖项:

 compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.4.0")

通过包含此依赖项,Spring 将自动为其注册一个转换器,如此 所述。之后,您需要将以下内容添加到 application.properties:

 spring.jackson.serialization.write_dates_as_timestamps=false

这将确保使用正确的转换器,并且日期将以 2016-03-16T13:56:39.492 的格式打印

只有在您想更改日期格式时才需要注释。

原文由 Erik Pragt 发布,翻译遵循 CC BY-SA 4.0 许可协议

我添加了 com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.6.1 依赖项并开始获取以下格式的日期:

 "birthDate": [
    2016,
    1,
    25,
    21,
    34,
    55
  ]

这不是我想要的,但我越来越近了。然后我添加了以下内容

spring.jackson.serialization.write_dates_as_timestamps=false

到 application.properties 文件,它给了我我需要的正确格式。

 "birthDate": "2016-01-25T21:34:55"

原文由 patelb 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题