如何在将对象转换为json时排除空值

问题描述 投票:0回答:1

我正在使用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

我正在努力

  • 骡子3.9.0
  • Anypoint Studio 6.4
  • com.fasterxml.jackson,在某些地方org.codehaus.jackson

我真的很感激任何帮助或暗示。

json mule anypoint-studio jackson2 jackson-databind
1个回答
1
投票

鉴于这在Mule中,您可以使用DataWeave来转换有效负载。设置XML writer属性skipNullOn可以提供所需的结果。 https://docs.mulesoft.com/mule-user-guide/v/3.9/dataweave-formats#skip-null-on

%output application/xml skipNullOn="payload"
---
payload
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.