我正在尝试将收到的 json 响应反序列化为对象。我收到以下错误:
org.springframework.http.converter.HttpMessageNotReadableException:无法读取 JSON:无法识别的字段“已初始化”
我知道这个initialized
字段来自哪里,但我目前无法编辑对象类。相反,我想通过编辑对象映射器来关闭遇到类中不存在的字段时引发的异常:DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
我正在使用 RestTemplate
来调用 URL。我使用的restTemplate实例是一个bean,因此是一个单例,它是在一个xml文件中创建的,如下所示:
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"
p:interceptors-ref="rest-template-client-interceptors"/>
问题是我不确定如何通过 xml 构造 RestTemplate 将 DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES 设置为 false。我是 Spring 新手,所以不知道从哪里开始。
有什么建议吗?
最佳答案
您必须配置 RestTemplate 消息转换器 (MappingJacksonHttpMessageConverter) 才能使用自定义对象映射器。
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper" ref="customObjectMapper"/>
</bean>
</list>
</property>
</bean>
<bean id="customObjectMapper" class="org.codehaus.jackson.map.ObjectMapper"/>
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="customObjectMapper" />
<property name="targetMethod" value="configure" />
<property name="arguments">
<list>
<value type="org.codehaus.jackson.map.DeserializationConfig.Feature">FAIL_ON_UNKNOWN_PROPERTIES</value>
<value>false</value>
</list>
</property>
</bean>
关于java - 如何使用 spring xml 将 FAIL_ON_UNKNOWN_PROPERTIES 设置为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58631554/