1

我有以下 Java 类,我想使用 Jackson 将其序列化为 JSON:

public class Event
   boolean allDay;
   Date start;
   Date end;

   // get/set
}

但是我想在 allDay 为真时将日期格式化为“yyyy-MM-dd”,当 allDay 为假时将日期格式化为“yyyy-MM-dd HH:mm”。那可能吗?

4

2 回答 2

1

Mike 的回答是正确的,当前的序列化器(可能还有反序列化器)是显而易见的方法。我想不出更具体的支持来处理像这样的共同约束案例。

对于反序列化,您还可以考虑将@JsonCreator 用于构造函数(或静态工厂方法):好处是您可以定义要传递的布尔标志和字符串值,因此自定义处理会更简单一些。

于 2011-02-13T07:25:15.437 回答
1

我认为没有任何内置方法可以做到这一点,这意味着您需要编写一些自定义序列化代码。JsonDeserialize可能是您想要开始的地方。

您还必须确保使用 JSON 的代码知道如何处理两种替代格式 - 这是一个完全独立的混乱。实际上,仅发送未格式化的时间戳可能更有意义(我认为默认值是将其写为自纪元以来的毫秒数)并确保客户端代码在显示给用户之前对其进行适当的格式化。

于 2011-02-12T16:38:39.450 回答