【发布时间】:2019-09-03 20:26:05
【问题描述】:
我有一个带有Boolean 属性的JSON 对象,在反序列化期间只需要允许true 或false。
任何不同于true 和false 的值都应该引发异常。
我该怎么做?
例如:
有效的json:
{
"id":1,
"isValid":true
}
无效的 json:
{
"id":1,
"isValid":1
}
更新
我尝试了@Michał Ziober 的建议,效果很好。
当我正在实现一个 Spring 应用程序(使用 Webflux)时,我只需要以不同的方式进行配置。我在这里发布我所做的:
- 创建一个从
DelegatingWebFluxConfiguration扩展的配置类 - 覆盖
configureHttpMessageCodecs方法设置属性ObjectMapper
@Configuration
public class JacksonConfig extends DelegatingWebFluxConfiguration {
@Override
protected void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable(MapperFeature.ALLOW_COERCION_OF_SCALARS);
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
configurer.defaultCodecs()
.jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper));
}
}
【问题讨论】:
-
您是使用硬编码还是使用第三方包进行反序列化?如果您使用的是第三方包,那么
newtonsoft您使用的是什么包? -
@i-medina 你有没有想过编写自己的 JsonDeserializer?
-
@StéphaneJeandeaux 是的,我想过。但我想知道是否有比这更简单的方法,比如 Jackson 注释或配置。
-
@xTwisteDx 我正在使用 Jackson 2.9.8
标签: java json jackson deserialization jackson-databind