[英]Converting multiple JSON object to one list Mule dataweave
I am having input as below 我有如下输入
{ "ResidentialAddress": { "type": "RES", "Building": "String" }, "Name": "Satheesh", "Status": "Active", "OfficeAddress": { "type": "OFC", "Building": "String" }, "TempAddress": { "type": "TEMP", "Building": "String" } }
I am looking to convert it as below 我希望将其转换如下
{Address:[ { "type": "RES", "Building": "String" }, { "type": "OFC", "Building": "String" },{ "type": "TEMP", "Building": "String" } ]}
When i tried with address:payload.ResidentialAddress ++ payload.TempAddress it give me combined fields not a list can anyone help? 当我尝试使用address:payload.ResidentialAddress ++ payload.TempAddress时,它给了我组合的字段,而不是列表,谁能帮忙?
In dataweave use the flatten operation. 在dataweave中使用扁平化操作。 after dataweave set payload .
在dataweave设置有效负载之后。
%dw 1.0
%output application/json
---
(flatten payload) filter ($.type != null)
final xml file would be 最终的xml文件将是
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[ %dw 1.0
%output application/json
---
(flatten payload) filter ($.type != null)]]></dw:set-payload>
</dw:transform-message>
<set-payload value="{"Address": #[payload]}" mimeType="application/json" doc:name="Set Payload"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
This should work for filtering any fields that have string/integer/boolean values: 这应该适用于过滤具有字符串/整数/布尔值的任何字段:
%dw 1.0
%output application/json
---
{
Address: (flatten payload) filter ($ is :object)
}
Against your test data: 针对您的测试数据:
%dw 1.0
%output application/json
---
{ Address:payload filter $ is :object map $}
gives: 给出:
{
"Address": [
{
"type": "RES",
"Building": "String"
},
{
"type": "OFC",
"Building": "String"
},
{
"type": "TEMP",
"Building": "String"
}
]
}
but you may need to tweak the filter to work with your real data... 但您可能需要调整过滤条件才能使用真实数据...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.