将java.util.Date转换为json格式
我必须将POJO转换为JSON字符串才能发送到客户端代码 然而,当我这样做时,POJO中的将java.util.Date转换为json格式,java,json,spring-boot,jackson,resteasy,Java,Json,Spring Boot,Jackson,Resteasy,我必须将POJO转换为JSON字符串才能发送到客户端代码 然而,当我这样做时,POJO中的java.util.Date字段(值为“2107-06-05 00:00:00.0”)会被翻译为“149659200000”,我认为这是一个自大纪元以来的时间。我希望它在Json中更具可读性,可能是'DD/MM/YYYY'格式 我在Spring Boot应用程序中使用RestEasycontroller,它处理Java对象到JSON的转换 有什么问题吗?RestEasy通过Jackson支持JSON,因此您
java.util.Date
字段(值为“2107-06-05 00:00:00.0
”)会被翻译为“149659200000
”,我认为这是一个自大纪元以来的时间。我希望它在Json中更具可读性,可能是'DD/MM/YYYY'格式
我在Spring Boot应用程序中使用RestEasy
controller,它处理Java对象到JSON的转换
有什么问题吗?RestEasy通过Jackson支持JSON,因此您可以通过多种方式处理
Date
序列化
1. @JsonFormat注释
如果您想格式化特定字段,只需向POJO添加注释即可
public class TestPojo {
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
public Date testDate;
}
2.杰克逊酒店
如果要全局设置日期
序列化格式,则必须调整Jackson配置属性。例如,对于application.properties
文件格式
第一个选项禁用将日期写入时间戳:
第二个定义了日期格式:
spring.jackson.date-format=dd-MM-yyyy
或者,对于application.yml
文件格式:
spring:
jackson:
date-format: "dd-MM-yyyy"
serialization:
write_dates_as_timestamps: false
3.自定义序列化程序
如果你想完全控制序列化,你必须实现一个自定义的
您是否考虑使用日期格式化程序,例如SimuleDead格式?张贴代码…@ AksayLokur.我认为您可以用“代码> JsonFormat”(Prime= JSONFrast.Hopy.Script,模式= YYYY MM)注释POJO字段。dd@HH:mm:ss.SSSZ”)或使用
mapper.disable设置jackson objectmapper(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
如果您希望它在全球范围内工作,请注意这两种格式是不同的:时间戳是瞬间,即时间线上的一个点。DD/mm/yyyy是本地日期,即24小时(通常)很长的一段时间,它只能与给定时区的时间戳相关。您的应用程序可能需要一个或另一个时间戳,但不要认为它们是等效的。@jan.vdbergh这完全取决于您试图表示的内容:如果您表示某件事情发生的时间,例如日志事件,则时间戳是正确的。如果您不是试图表示人类输入的日期,例如生日,时间戳是不正确的:您的生日不会因为您旅行到不同的时区而改变。
spring:
jackson:
date-format: "dd-MM-yyyy"
serialization:
write_dates_as_timestamps: false
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));
}
}
public class TestPojo {
@JsonSerialize(using = CustomDateSerializer.class)
public Date testDate;
}