Как установить FAIL_ON_UNKNOWN_PROPERTIES в false с использованием Spring XML - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь десериализовать ответ json, который я получаю на объект. Я получаю следующую ошибку:

org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Unrecognized field "initialized"

Я знаю, откуда исходит это поле 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"/>

Проблема в том, что я не уверен, как установить DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES в falseпутем построения шаблона RestTemplate через XML. Я новичок в весне, поэтому не уверен, с чего начать.

Есть предложения?

1 Ответ

0 голосов
/ 30 октября 2019

Необходимо настроить конвертер сообщений 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>
...