Как исключить нулевые значения при преобразовании объекта в JSON - PullRequest
0 голосов
/ 14 сентября 2018

Я работаю с MuleSoft Anypoint Studio, и мне нужно преобразовать полезную нагрузку JSON в конечный XML.Во время этого преобразования все поля, которые имеют значение NULL, должны быть исключены.Некоторые значения не отправляются с помощью запроса POST, и я ожидаю, что они не будут видны в конечном результате - файле XML, но это не так, поскольку они есть.Например, в запросе JSON POST поле Value не отправляется, в Mule оно становится нулевым, поэтому оно не должно появляться в файле XML, но все равно записывается в нем как <Value/>.В основном у меня проблемы с Object to JSON трансформатором.

Я пытался настроить собственный маппер

 <spring:beans>
     <spring:bean id="Bean" name="NonNullMapper" class="org.codehaus.jackson.map.ObjectMapper">
         <spring:property name="SerializationInclusion">
            <spring:value type="org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion">NON_NULL</spring:value>
         </spring:property>
     </spring:bean>

Но это не помогло.Я также пытался

<spring:beans>
     <spring:bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper" />
     <spring:bean
         class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
         <spring:property name="targetObject" ref="jacksonObjectMapper" />
         <spring:property name="targetMethod" value="configure" />
         <spring:property name="arguments">
             <spring:list>
                 <spring:value>WRITE_NULL_MAP_VALUES</spring:value>
                 <spring:value>false</spring:value>
             </spring:list>
         </spring:property>
     </spring:bean>
 </spring:beans>

Это не сработало, так как я получаю сообщение об ошибке, которое мне не удалось исправить

More than one object of type class org.codehaus.jackson.map.ObjectMapper registered but only one expected

Я работаю с

  • Mule 3.9.0
  • Anypoint Studio 6.4
  • com.fasterxml.jackson и в некоторых местах org.codehaus.jackson

Я был бы очень признателен любомупомощь или намек.

1 Ответ

0 голосов
/ 17 сентября 2018

Учитывая, что это в Mule, вы можете вместо этого использовать DataWeave для преобразования полезной нагрузки. Установка свойства писателя XML skipNullOn может дать желаемый результат. https://docs.mulesoft.com/mule-user-guide/v/3.9/dataweave-formats#skip-null-on

Пример

%output application/xml skipNullOn="payload"
---
payload
...