MuleSoft json 转 xml

MuleSoft json 转 xml

 

背景

使用MuleSoft将Json格式的数据转换为xml格式的。

环境

mulesoft runtime server: 4.15

DataWeave : 2.0

实现

要转换的Json数据:

{
    "name": "BeJson",
    "url": "http://www.bejson.com",
    "page": 88,
    "isNonProfit": true,
    "address": {
        "street": "科技园路.",
        "city": "江苏苏州",
        "country": "中国"
    },
    "links": [
        {
            "name": "Google",
            "url": "http://www.google.com"
        },
        {
            "name": "Baidu",
            "url": "http://www.baidu.com"
        },
        {
            "name": "SoSo",
            "url": "http://www.SoSo.com"
        }
    ]
}

转出的xml数据:

<?xml version="1.0" encoding="UTF-8" ?>
<root>
<name>BeJson</name>
<url>http://www.bejson.com</url>
<page>88</page>
<isNonProfit>true</isNonProfit>
<address>
<street>科技园路.</street>
<city>江苏苏州</city>
<country>中国</country>
</address>
<link>
<name>Google</name>
<url>http://www.google.com</url>
</link>
<link>
<name>Baidu</name>
<url>http://www.baidu.com</url>
</link>
<link>
<name>SoSo</name>
<url>http://www.SoSo.com</url>
</link>
</root>


实现:

<flow name="testFlow1" doc:id="5cbe7b98-09b9-4011-adc8-ef99ea05f7dc" >
<http:listener doc:name="Listener" doc:id="91e688a4-1771-4822-bfc7-5fe0d2a8bbf8" config-ref="HTTP_Listener_config" path="/" />
<set-payload value='#[%dw 2.0
output application/json
---
{
"name": "BeJson",
"url": "http://www.bejson.com",
"page": 88,
"isNonProfit": true,
"address": {
"street": "科技园路.",
"city": "江苏苏州",
"country": "中国"
},
"links": [
{
"name": "Google",
"url": "http://www.google.com"
},
{
"name": "Baidu",
"url": "http://www.baidu.com"
},
{
"name": "SoSo",
"url": "http://www.SoSo.com"
}
]
}]' doc:name="Set Payload" doc:id="42e6fd53-0eb1-465d-9a99-4d002554023a" />
<ee:transform doc:name="Transform Message" doc:id="5d62c9f0-21ba-4cea-993f-205810a38338" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/xml
---
{
root: {
'name': payload.name,
'url': payload.url,
'page': payload.page,
'isNonProfit': payload.isNonProfit,
"address": {
"street": payload.address.street,
"city": payload.address.city,
"country": payload.address.country
},
link : payload.links map (item,index) ->{
"name" : item.name,
"url" : item.url
}
}
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<logger level="INFO" doc:name="Logger" doc:id="d0e74e13-311f-41a1-bdda-8a17ebddf9ae" message="#[payload]"/>
</flow>

 

 

posted @ 2019-07-12 18:21  源问三生  阅读(342)  评论(0编辑  收藏  举报