gpt4 book ai didi

java - 将 java.util.Date 转换为 json 格式

转载 作者:行者123 更新时间:2023-12-02 00:41:33 25 4
gpt4 key购买 nike

我必须将我的 POJO 转换为 JSON 字符串才能发送到客户端代码。

然而,当我这样做时,我的 POJO 中的 java.util.Date 字段(具有值“2107-06-05 00:00:00.0”)得到翻译为“1496592000000”,我认为这是一个自纪元以来的时间。我希望它在 Json 中更易读,可能采用“DD/MM/YYYY”格式。

我在 Spring Boot 应用程序中使用 RestEasy Controller 来处理 Java 对象到 JSON 的转换。

有什么问题的线索吗?

最佳答案

RestEasy 通过 Jackson 支持 JSON,因此您可以通过多种方式处理 Date 序列化。

1。 @JsonFormat注解

如果您想格式化特定字段 - 只需添加 @JsonFormat对您的 POJO 的注释。

public class TestPojo {

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
public Date testDate;
}

2。 jackson 属性

如果你想全局设置 Date 序列化格式 - 你必须调整 Jackson 配置属性。例如。 application.properties 文件格式。

第一个禁用WRITE_DATES_AS_TIMESTAMPS serialization feature :

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

第二个定义日期格式:

spring.jackson.date-format=dd-MM-yyyy

或者,对于 application.yml 文件格式:

spring:
jackson:
date-format: "dd-MM-yyyy"
serialization:
write_dates_as_timestamps: false

3。自定义序列化程序

如果你想完全控制序列化 - 你必须实现自定义 StdSerializer .

public class CustomDateSerializer extends StdSerializer<Date> {

private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");

public CustomDateSerializer() {
this(null);
}

public CustomDateSerializer(Class t) {
super(t);
}

@Override
public void serialize(Date date, JsonGenerator generator, SerializerProvider provider)
throws IOException, JsonProcessingException {

generator.writeString(formatter.format(date));
}
}

然后将其与 @JsonSerialize 一起使用:

public class TestPojo {

@JsonSerialize(using = CustomDateSerializer.class)
public Date testDate;
}

关于java - 将 java.util.Date 转换为 json 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46398937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com