我有几个POJO看起来像这样:
class Items {
List
我希望能够使用自定义格式序列化Item中的Date字段(在日期中添加前缀,例如“Date:xxx”),但我不想总是这样做(因为它被其他消费者使用)它不需要此前缀),仅在特定情况下.
如果我使用@JsonSerialize(使用= CustomDateSerializer.class)注释Item的getInsertionDate()我可能会使这个工作,但是,我不想这样做,因为我不总是想要使用此方法序列化此字段,仅在特定情况下.
理想情况下,我会在我想要自定义序列化的控制器中执行此操作:
@JsonSerialize(using = CustomDateSerializer.class)
public List
其中CustomDateSerializer扩展了SerializerBase< Date>并且Jackson会发现它应该使用默认的序列化程序序列化List中的每个项目,当它遇到Date对象时它应该使用我的自定义序列化程序.当然这不起作用,因为不是如何使用@JsonSerialize,但有没有办法让这个工作不是用包装器包装Item并在我想要自定义序列化时使用该包装器?我是否以错误的方式思考这个问题,还有另一种方法可以做到这一点吗?
请注意,我正在使用Spring MVC,所以我不是直接调用序列化.
任何帮助将非常感激 :)
实际创建单独的POJO(而不是传递List类型)可能更容易,以便您可以添加必要的注释.
如果您直接使用Jackson,您还可以使用ObjectWriter并指定要使用的默认日期格式.但是我不知道Spring是否允许你这样做(大多数框架都没有,只暴露了ObjectMapper的可配置性).
还有一个注意事项 – 您可以使用Dates(和Jackson 2.x)上的简单注释代替自定义序列化程序(和/或反序列化程序):
public class DateStuff {
@JsonFormat(shape=JsonFormat.Shape.STRING,pattern="'Date:'yyyy'-'MM'-'dd")
public Date date;
}
指定每个属性格式覆盖.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。