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

How to exclude null values while converting object to json

我正在使用 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 中,您可以改用 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