我使用jackson 2.6.3来做JSON编组/解组。如果有效负载中缺少某个字段,则不会调用该字段的setter。如果有效负载中缺少字段,我需要插入一些默认值。还有一些业务逻辑检查。如果不在设置器中,不知道放在哪里。使用Spring boot 1.4.0。
非常感谢任何提示/线索
答案 0 :(得分:0)
您可以在构造函数和构造函数参数中使用@JsonCreaty的参数化构造函数和@JsonProperty。然后,即使任何属性为null,Jackson也会始终调用此构造函数进行反序列化。如果任何值为null,您可以在那里设置默认值,甚至可以进行业务逻辑检查。
样品:
timestamps()
答案 1 :(得分:0)
您可以将DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
用于假。
如果需要通过从Spring扩展WebMvcConfigrationAdaptor
类来添加HttpMessageConverter
来覆盖spring boot自动配置,则此配置将在反序列化时忽略任何未知属性。
@Configuration
class WebConfiguration extends WebMvcConfigurerAdapter{
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.indentOutput(true).dateFormat(
new SimpleDateFormat("yyyy-MM-dd"));
converters.add(new MappingJackson2HttpMessageConverter(builder.build()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
false)));
}
}
希望这会对你有所帮助。