"JSON Java 8 LocalDateTime format in Spring Boot" 直译为“在Spring Boot中使用JSON Java 8 LocalDateTime格式”。

23 浏览
0 Comments

"JSON Java 8 LocalDateTime format in Spring Boot" 直译为“在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;
}

但是以上任何一种注释都不起作用,日期仍然按照上面的格式进行格式化。欢迎提供建议!

admin 更改状态以发布 2023年5月24日
0
0 Comments

我添加了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"

0
0 Comments

更新: 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的格式打印日期。

只有在您想要更改日期格式的情况下才需要注释。

0