我有几个 POJO,如下所示:
class Items {
List<Item> items;
public List<Item> getItems() {
return items;
}
...
}
class Item {
String name;
Date insertionDate;
...
}
我希望能够使用自定义格式序列化Date
字段Item
(在日期中添加前缀,例如“日期:xxx”),但我不想总是这样做(因为它被其他消费者使用'不需要这个前缀),仅在特定情况下。
Item
如果我用'sgetInsertionDate()
进行注释,@JsonSerialize(using = CustomDateSerializer.class)
我可能可以完成这项工作,但是,我不想这样做,因为我并不总是想使用这种方法序列化这个字段,只在特定情况下。
所以理想情况下,我会在我想要自定义序列化的控制器中执行此操作:
@JsonSerialize(using = CustomDateSerializer.class)
public List<Item> getItems() {
....
}
在哪里CustomDateSerializer extends SerializerBase<Date>
,杰克逊会发现它应该List
使用默认序列化程序序列化每个项目,并且当它遇到一个Date
对象时,它应该使用我的自定义序列化程序。当然这不起作用,因为这不是如何使用的,但是除了用包装器包装并在我想要自定义序列化时使用该包装器@JsonSerialize
之外,还有其他方法可以使它工作吗?Item
我是否以错误的方式思考这个问题,还有另一种方法可以做到这一点?
请注意,我使用的是 Spring MVC,所以我没有直接调用序列化。
任何帮助将非常感激 :)