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