我有如下的json输入
"products": {
"p0": {
"productId": "110",
"productName": "bag"
},
"p1": {
"productId": "160",
"productName": "shoe"
},
"p2": {
"productId": "140",
productName": "watch"
}
}我想要像下面这样的输出
[
{
"productId": "110",
"productName": "bag"
},
{
"productId": "160",
"productName": "shoe"
},
{
"productId": "140",
"productName": "watch"
}
]因为我需要将上面的输出格式传递给其他入站。谁能帮我把我的输入json转换成上面的输出json。
提前感谢所有人
发布于 2015-05-05 01:27:42
您可以使用一些MEL和json转换器来实现所需的功能:
<json:json-to-object-transformer
returnClass="java.util.HashMap" />
<set-payload value="#[($.value in payload.products.entrySet())]" />
<json:object-to-json-transformer />如果您要进行更复杂的转换,我将编写一个自定义转换器,或者使用Groovys JsonBuilder和JsonSlurper或可能的Datamapper编写脚本转换器。
发布于 2017-04-08 21:55:46
如果你使用的是Mule 3.7和更高版本,你可以使用dataweave组件简单而容易地做到这一点:
<flow name="Testlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/test" doc:name="HTTP"/>
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
payload.products map (
$
)
]]></dw:set-payload>
</dw:transform-message>
</flow>https://stackoverflow.com/questions/30035597
复制相似问题