Jackson 的 DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES

文章讨论了在使用Jackson库进行JSON序列化或反序列化时,如何配置处理遇到对象模型中不存在的未知属性的情况。默认情况下,遇到这种未知属性会抛出异常,但可以通过设置DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES为False来允许忽略这些属性,从而避免失败并继续处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

API 文档中的说法就是:

Feature that determines whether encountering of unknown properties (ones that do not map to a property, and there is no “any setter” or handler that can handle it) should result in a failure

反序列化时遇到未知属性(那些没有对应的属性来映射的属性,并且没有任何setter或handler来处理这样的属性)是否抛出处理失败的异常。

说明

简单来说,就是在进行序列化或者反序列化的时候。

JSON 字符串中有一个字段,但是我们的对象没有这个字段,那么处理器应该做什么的配置。

默认情况下是抛出异常,如果不想抛出异常只想处理继续进行的话,这个参数要设置为 False。

https://www.ossez.com/t/jackson-deserializationfeature-fail-on-unknown-properties/14311

@Configuration public class BeanConfig { @Bean public Jackson2ObjectMapperBuilderCustomizer customizeJackson2ObjectMapper() { return builder -> { SimpleModule longModule = new SimpleModule(); longModule.addSerializer(Long.TYPE, ToStringSerializer.instance); longModule.addSerializer(Long.class, ToStringSerializer.instance); JavaTimeModule timeModule = new JavaTimeModule(); timeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateUtils.DATE_TIME_FORMATTER)); timeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateUtils.DATE_TIME_FORMATTER)); timeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ISO_LOCAL_DATE)); timeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ISO_LOCAL_DATE)); timeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ISO_LOCAL_TIME)); timeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ISO_LOCAL_TIME)); builder.modules(longModule, timeModule); builder.postConfigurer(mapper -> { mapper.configure(SerializationFeature.FAIL_ON_SELF_REFERENCES, true);//忽略循环引用 mapper.configure(SerializationFeature.WRITE_SELF_REFERENCES_AS_NULL, true);//循环引用写入null mapper.setSerializationInclusion(Include.NON_NULL); mapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true); mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);// 兼容高德地图api }); }; } }
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HoneyMoose

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值