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