gpt4 book ai didi

java - Jackson 自定义字符串到日期序列化器

转载 作者:行者123 更新时间:2023-12-01 10:14:55 33 4
gpt4 key购买 nike

我试图让 jackson 用给定的格式解析字符串到日期。我现在想出了以下代码:

@JsonIgnoreProperties(ignoreUnknown = true)
public class EventData implements Serializable {

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

@JsonSerialize(using = StringToDateSerializer.class, as = Date.class)
private Date eventStart;

public class StringToDateSerializer extends JsonSerializer<String> {

@Override
public void serialize(String tmpString,
JsonGenerator jsonGenerator,
SerializerProvider serializerProvider)
throws IOException, JsonProcessingException {
try {
jsonGenerator.writeObject(formatter.parse(tmpString));
} catch (ParseException e) {

}
}
}
}

但我唯一的字段 eventStart 总是填充 NULL。此外,它不会在 try/catch block 内的断点处停止,就好像它从未被调用过一样。其他(非自定义)字段填充得很好。我做错了什么?谢谢

最佳答案

如果您尝试将 JSON 转换为 EventData,其中字段之一是数据字符串,那么您需要将其反序列化(当您将 Java 对象转换为 JSON/字节流时,就会进行序列化过程)。

Jackson 提供了更好的方法来处理日期格式:

http://wiki.fasterxml.com/JacksonFAQDateHandling

从 Jackson 2.0 开始,您可以使用 JsonFormat 来指定自定义日期格式

  public class DateStuff {
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd,HH:00", timezone="CET")
public Date creationTime;
}

关于java - Jackson 自定义字符串到日期序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35956385/

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