如何在将对象转换为 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
我正在与
合作
- 骡子 3.9.0
- Anypoint Studio 6.4
- com.fasterxml.jackson 在某些地方 org.codehaus.jackson
非常感谢任何帮助或提示。
鉴于这在 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
我正在使用 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
非常感谢任何帮助或提示。
鉴于这在 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