我正在尝试将Spring Web应用程序中的getters和setter的可见性全局设置为我的自定义对象映射器。这是映射器:
public class FieldsObjectMapper extends ObjectMapper {
public FieldsObjectMapper() {
super();
setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE);
setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
}
}
这是Spring XML配置:
<bean id="objectMapper"
class="com.app.FieldsObjectMapper"/>
<bean id="jsonMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="objectMapper"/>
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters" ref="jsonMessageConverter"/>
</bean>
我想要实现的是 JSON反序列化,仅基于my @JsonProperty
注释上面的字段,而不是setter或getter。
这是我的POJO:
public class OrderRequest {
...
@JsonProperty(value = "expiration")
@JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
private LocalDateTime _expiration;
public LocalDateTime getExpiration() {
return _expiration;
}
public void setExpiration(LocalDateTime expiration) {
_expiration = expiration;
}
...
}
使用此设置进行反序列化无法正常工作,尝试反序列化LocalDateTime
时会抛出异常,因为使用的是默认的LocalDateTimeDeserializer,而不是我的带注释的JsonLocalDateTimeDeserializer
。
如果我把这个注释
@JsonAutoDetect(
setterVisibility = JsonAutoDetect.Visibility.NONE,
getterVisibility = JsonAutoDetect.Visibility.NONE)
在OrderRequest
类本地上方的一切正常,JSON被反序列化到对象正确。
我是否设置错误或其他地方有回调?
提前感谢您的帮助。
P.S。:我使用Jackson 2.6.0 和Spring 4.2