将 java.util.Date 转换为 json 格式
Convert java.util.Date to json format
我必须将我的 POJO 转换为 JSON 字符串才能发送到客户端代码。
然而,当我这样做时,我的 POJO 中的 java.util.Date
字段(具有值“2107-06-05 00:00:00.0
”)被翻译为“1496592000000
”,我认为这是自纪元以来的时间.我希望它在 Json 中更易读,可能采用 'DD/MM/YYYY' 格式。
我在 Spring 引导应用程序中使用 RestEasy
控制器,它处理 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。杰克逊属性
如果您想全局设置 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;
}
我必须将我的 POJO 转换为 JSON 字符串才能发送到客户端代码。
然而,当我这样做时,我的 POJO 中的 java.util.Date
字段(具有值“2107-06-05 00:00:00.0
”)被翻译为“1496592000000
”,我认为这是自纪元以来的时间.我希望它在 Json 中更易读,可能采用 'DD/MM/YYYY' 格式。
我在 Spring 引导应用程序中使用 RestEasy
控制器,它处理 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。杰克逊属性
如果您想全局设置 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;
}