【问题标题】:How to return Date object in ISO format instead of timestamp in Java?如何以 ISO 格式返回 Date 对象而不是 Java 中的时间戳?
【发布时间】:2016-04-13 12:57:32
【问题描述】:

假设一个java类

public class User(){
    String name;
    Date dateCreated;
}

还有一个 Spring 引导控制器:

@RequestMapping(value = "getUser", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE))
public User getUser() {
   User newUser = new User();
   newUser.dateCreated = new Date();
   return newUser;
}

如果我有一个以 JSON 格式返回该用户对象的 rest API 端点,如上所述,dateCreated 将以时间戳格式而不是 ISO 格式发送。除了必须指定一个将 Date 作为 String 的新返回对象之外,还有什么方法可以让 Java 以 Iso 格式返回日期?

一种方法是将日期转换为字符串并发送,但我想知道是否有更方便的方法..

【问题讨论】:

  • 你要序列化到什么内容类型?
  • 啊,让我更新一下我的帖子,响应以 JSON 格式返回。
  • 您使用什么库进行 JSON 序列化/反序列化? Spring Boot 的默认值为 Jackson。
  • 好的,我会在这里与你保持一致,我完全不知道,我从来不需要为 JSON 序列化/反序列化指定一个库,这总是由 spring boot 自动完成的,所以我想假设因为默认是杰克逊,然后是杰克逊,但我不会 100% 接受它。我只是在我的 java 类顶部有 @RestController,一切都会自动处理。

标签: java json date spring-boot


【解决方案1】:

使用以下内容更新您的 application.properties:

spring.jackson.serialization.write-dates-as-timestamps:false

现在您可以在 bean 中指定格式,如下所示:

public class User(){
    String name;
    @JsonFormat(pattern="yyyy-MM-dd")
    Date dateCreated;
}

【讨论】:

  • 我在这里遇到了问题。 json格式显示的日期少了1天。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
  • 1970-01-01
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
相关资源
最近更新 更多