[英]LocalTime into Json - unable to change time format
我有一個像下面這樣的類
public class TimePeroid implements Comparable<TimePeroid>, Serializable {
private static final long serialVersionUID = -65707223409901256L;
@Expose
//@JsonFormat(pattern="HH:mm:ss")
private LocalTime start;
@Expose
//@JsonFormat(pattern="HH:mm:ss")
private LocalTime end;
//getter setter
}
在響應時,當我在ObjectMapper
的幫助下將其轉換為 JSON 字符串時,我得到如下所示的 JSON 字符串
{
"start" : {"hour":6,"minute":0,"second":0,"nano":0},
"end":{"hour":18,"minute":0,"second":0,"nano":0}
}
但我需要這樣
{
"start":"06:00:00",
"end":"18:00:00"
}
到目前為止我所嘗試的
解決方案1
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS = false
解決方案2
@JsonFormat(pattern="HH:mm:ss")
解決方案3
ObjectMapper mapperObj = new ObjectMapper();
mapperObj.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
DateFormat df = new SimpleDateFormat("HH:mm");
mapperObj.setDateFormat(df);
它們都不起作用。 請幫我解決這個問題
您是否在 Jackson 配置中包含了 JavaTimeModule?
這里有一個相關的 SO 問答https://stackoverflow.com/a/32202201/134894
從該答案復制/粘貼
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.6.0</version>
</dependency>
和
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
一旦您注冊了模塊,您還可以通過注冊序列化程序來配置默認的LocalDate
格式。
SimpleModule module = new SimpleModule();
module.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ISO_LOCAL_TIME));
mapper.registerModule(module);
實際上,我看到您正在使用 Spring Boot .. 所以這可能更適合該環境
@Bean
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
return builder -> {
builder.serializers(new LocalTimeSerializer(DateTimeFormatter.ISO_LOCAL_TIME));
builder.deserializers(new LocalTimeDeserializer(DateTimeFormatter.ISO_LOCAL_TIME));
builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.