java - 为什么当我将实体转换为 Json 时,LocalDate 格式会发生变化?

标签 java localdate httpentity

我的目标是将日期存储到数据库中。为了完成这个应用程序,我使用 Springboot、JPA、H2...

我使用LocalDate,所需的格式是yyyy-MM-dd

实体

@Entity
public class MyObject {

    @Id
    private String id;
    private LocalDate startdate;
    private LocalDate enddate;

    public MyObject() {}

    public MyObject(LocalDate enddate) {
        this.startdate = LocalDate.now();
        this.enddate = enddate;
    }

    ...
}

主要

private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
MyObject myObject = new MyObject(LocalDate.parse("2019-03-01", formatter));
myObject.setId(UUID.randomUUID().toString());
myObjectResource.save(myObject);

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
System.out.println(myObject.getStartdate()); // 2019-02-23
System.out.println(myObject.getEnddate()); // 2019-03-01
HttpEntity<String> entity = new HttpEntity<>(this.toJsonString(myObject), headers);
System.out.println(entity.toString()); // <{"id":"ba6649e4-6e65-4f54-8f1a-f8fc7143b05a","startdate":{"year":2019,"month":"FEBRUARY","dayOfMonth":23,"dayOfWeek":"SATURDAY","era":"CE","dayOfYear":54,"leapYear":false,"monthValue":2,"chronology":{"id":"ISO","calendarType":"iso8601"}},"enddate":{"year":2019,"month":"MARCH","dayOfMonth":1,"dayOfWeek":"FRIDAY","era":"CE","dayOfYear":60,"leapYear":false,"monthValue":3,"chronology":{"id":"ISO","calendarType":"iso8601"}}},[Content-Type:"application/json"]>

private String toJsonString(Object o) throws Exception {
    ObjectMapper om = new ObjectMapper();
    return om.writeValueAsString(o);
}

您能否帮助我理解为什么 entity.toString() 中的日期与之前 getMethods() 中的日期不同?

感谢您的帮助!

最佳答案

LocalDate.parse返回一个新的 LocalDate目的。 DateTimeFormatter 中指定的格式选项之后就迷路了。

Jackson (您正在使用的 JSON 库)不知道您之前如何“格式化” LocalDate ,因此它使用自己的格式。

您可以注册JavaTimeModule

final ObjectMapper om = new ObjectMapper();
om.registerModule(new JavaTimeModule());

或者您可以提供您的定制JsonSerializer<T> .

关于java - 为什么当我将实体转换为 Json 时,LocalDate 格式会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54841408/

相关文章:

java - 添加 ImageView 会导致 Android 应用小部件崩溃

java - 字符串到本地日期中的月年

java - 如何从 HttpEntity Java 中仅获取 Json 内容

java - 如何从 String 取回 InputStream

java - 在 C++/Java 中隐藏还是重载?

java - 我的 hibernate 实用程序返回空 session 工厂

java - 如何使 JDatePicker 文本字段格式化为输入?

jpa - LocalDateTime 和 JodaDate 冲突

javascript - Java 8 LocalDate 到 JavaScript 日期

android - 如何取消像whatsapp这样的图片和视频上传