用于在反序列化期间忽略未知属性的 SpringMVC 全局设置
Posted
技术标签:
【中文标题】用于在反序列化期间忽略未知属性的 SpringMVC 全局设置【英文标题】:SpringMVC global setting for ignoring unknown properties during deserialization 【发布时间】:2021-11-02 02:58:27 【问题描述】:Spring Boot 默认设置“spring.jackson.deserialization.fail-on-unknown-properties=false”。我有一个在 Spring Boot 中运行良好的库,但在现有 SpringMVC 应用程序中使用时,它会抛出“无法识别的字段,未标记为可忽略”。我可以在配置或其他方式中设置 SpringMVC 的一些可比较的全局设置吗?
编辑:spring webmvc 版本 3.2.15.RELEASE
【问题讨论】:
那是哪个 SpringMVC 版本? 春季版 3.2.15.RELEASE 【参考方案1】:您可以按照我在this 回答中提到的两种方法。如果我没记错的话,任何一个都可以为你工作。 (但如果你的 clinet 类没有无参数默认构造函数,方法 1 将不起作用)
【讨论】:
不幸的是 Jackson2ObjectMapperBuilder 不在春季 3.2.15;直到 4.1.1 我认为。 还没有,我尝试了自定义反序列化器的好主意,但它不起作用,因为我现在坚持使用 spring 3.2.15。明天我会看看那个版本是否有类似的方法。谢谢! @bob 如果你能分享你的代码,那会很有帮助 抱歉,我没有任何代码要分享。我将一个通常在 spring boot 中运行的库添加到我已经运行的 springmvc 应用程序中,它会引发该异常。我希望有一些设置可以让它忽略未知字段。【参考方案2】:您可以使用注释映射的类
@JsonIgnoreProperties(ignoreUnknown = true)
或者创建添加如下配置到 ObjectMapper 中:
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
【讨论】:
是的,但我无权访问源代码以上是关于用于在反序列化期间忽略未知属性的 SpringMVC 全局设置的主要内容,如果未能解决你的问题,请参考以下文章
在使用 Jackson 反序列化期间选择性地忽略 JSON 属性
JsonSerializer 在反序列化期间不使用内部构造函数