【发布时间】:2014-01-16 05:13:40
【问题描述】:
我正在使用 Jackson2 和 Spring 开发 REST 服务。
我知道 Jackson2 提供了一组非常有用的注解。根据要求,我们必须引入我们自己的自定义注解(如@Summary、@Detail 等)。
我想了解是否可以让 Jackson 使用我自己的注释以及它提供的注释。
如果有人可以展示一些示例或向我指出一些文档,请不胜感激。
【问题讨论】:
我正在使用 Jackson2 和 Spring 开发 REST 服务。
我知道 Jackson2 提供了一组非常有用的注解。根据要求,我们必须引入我们自己的自定义注解(如@Summary、@Detail 等)。
我想了解是否可以让 Jackson 使用我自己的注释以及它提供的注释。
如果有人可以展示一些示例或向我指出一些文档,请不胜感激。
【问题讨论】:
http://blog.palominolabs.com/2012/06/05/writing-a-custom-jackson-serializer-and-deserializer/ 这是一个很好的教程,但我认为您需要在所选字段上方添加 @jsonserializer 和 @jsondeserializer,这些注释接收一个类,您应该在每种情况下从序列化器和反序列化器扩展并实现您的逻辑想要这个过程。
http://texscribbles.blogspot.mx/2010/07/custom-json-serialization-with-spring.html?m=1
@JsonSerialize(using = JsonDateSerializer.class)
@JsonDeserialize(using = JsonDateDeserializer.class)
private Date approvalDate;
public class JsonDateSerializer extends JsonSerializer<Date> {
@Override
public void serialize(final Date value, final JsonGenerator jgen,
final SerializerProvider provider) throws IOException,
JsonProcessingException {
jgen.writeString(String.valueOf(value.getTime()));
}
}
【讨论】:
serialize() 方法中的注释?意思是,我可以在这个方法中使用反射吗?能否指点一下?
查看文档中的Contextual Handlers。此解决方案可能更优雅(取决于您的用例),因为您可以在映射器中注册序列化程序,而无需在实际类中引用自定义序列化程序。
【讨论】: