我有以下 Java 类,我想使用 Jackson 将其序列化为 JSON:
public class Event
boolean allDay;
Date start;
Date end;
// get/set
}
但是我想在 allDay 为真时将日期格式化为“yyyy-MM-dd”,当 allDay 为假时将日期格式化为“yyyy-MM-dd HH:mm”。那可能吗?
Mike 的回答是正确的,当前的序列化器(可能还有反序列化器)是显而易见的方法。我想不出更具体的支持来处理像这样的共同约束案例。
对于反序列化,您还可以考虑将@JsonCreator 用于构造函数(或静态工厂方法):好处是您可以定义要传递的布尔标志和字符串值,因此自定义处理会更简单一些。
我认为没有任何内置方法可以做到这一点,这意味着您需要编写一些自定义序列化代码。JsonDeserialize可能是您想要开始的地方。
您还必须确保使用 JSON 的代码知道如何处理两种替代格式 - 这是一个完全独立的混乱。实际上,仅发送未格式化的时间戳可能更有意义(我认为默认值是将其写为自纪元以来的毫秒数)并确保客户端代码在显示给用户之前对其进行适当的格式化。