JSON 到 XML 列表对象的数据编织转换
JSON to XML Dataweave transformation with list objects
我正在尝试使用 Mule Dataweave
将 JSON 对象转换为 XML 对象。下面是输入 JSON:
{
"root": {
"OBJECT1": {
"PARAM1": "PARAM1VALUE",
"PARAM2": "PARAM2VALUE"
},
"OBJECT2": [{
"KEY": "PARAMROWKEYVALUE1",
"VALUE": "PARAMROWVALUEVAL1"
}, {
"KEY": "PARAMROWKEYVALUE2",
"VALUE": "PARAMROWVALUEVAL2"
}],
"OBJECT3": {
"PARAM3": "PARAM3VALUE",
"PARAM4": "PARAM4VALUE"
}
}
}
我想把上面的转换成下面的XML:
<root>
<node1>PARAM1VALUE PARAM2VALUE</node1>
<args>
<paramrow>
<KEY>PARAMROWKEYVALUE1</KEY>
<VALUE>PARAMROWVALUEVAL1</VALUE>
</paramrow>
<paramrow>
<KEY>PARAMROWKEYVALUE2</KEY>
<VALUE>PARAMROWVALUEVAL2</VALUE>
</paramrow>
</args>
<details>
<PARAM3>PARAM3VALUE</PARAM3>
</details>
</root>
但是,当我使用这个 JSON 作为样本输入时,它会抛出一个错误 "validate mapping":
%dw 1.0
%output application/xml
---
payload
如何将这些对象元素映射到 XML?
考虑使用官方 MuleSoft 开发人员文档。
那里可以找到很多 DataWeave 示例和完整的参考资料。
https://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-examples#json-to-xml
https://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-reference-documentation
试试下面的 DataWeave
%dw 1.0
%output application/xml
---
{
root: {
node1: payload.root.OBJECT1.PARAM1 ++ ' ' ++ payload.root.OBJECT1.PARAM2,
args: {
(payload.root.OBJECT2 map {
paramrow: {
KEY: $.KEY,
VALUE: $.VALUE
}
})
},
details: {
(payload.root.OBJECT3 mapObject {
'$$': $
})
}
}
}
@mlucas67,是的,dataweave 表达式有效。
这是我试过的另一种方法。
%dw 1.0
%input payload application/json
%output application/xml
---
{
root: {(payload map {
node1: $.OBJECT1.PARAM1 ++ ' ' ++ $.OBJECT1.PARAM2,
args: {
($.OBJECT2 map paramrow: $)
},
details:
PARAM3: $.OBJECT3.PARAM3
})
}
}
感谢大家对此发表评论post。
我正在尝试使用 Mule Dataweave
将 JSON 对象转换为 XML 对象。下面是输入 JSON:
{
"root": {
"OBJECT1": {
"PARAM1": "PARAM1VALUE",
"PARAM2": "PARAM2VALUE"
},
"OBJECT2": [{
"KEY": "PARAMROWKEYVALUE1",
"VALUE": "PARAMROWVALUEVAL1"
}, {
"KEY": "PARAMROWKEYVALUE2",
"VALUE": "PARAMROWVALUEVAL2"
}],
"OBJECT3": {
"PARAM3": "PARAM3VALUE",
"PARAM4": "PARAM4VALUE"
}
}
}
我想把上面的转换成下面的XML:
<root>
<node1>PARAM1VALUE PARAM2VALUE</node1>
<args>
<paramrow>
<KEY>PARAMROWKEYVALUE1</KEY>
<VALUE>PARAMROWVALUEVAL1</VALUE>
</paramrow>
<paramrow>
<KEY>PARAMROWKEYVALUE2</KEY>
<VALUE>PARAMROWVALUEVAL2</VALUE>
</paramrow>
</args>
<details>
<PARAM3>PARAM3VALUE</PARAM3>
</details>
</root>
但是,当我使用这个 JSON 作为样本输入时,它会抛出一个错误 "validate mapping":
%dw 1.0
%output application/xml
---
payload
如何将这些对象元素映射到 XML?
考虑使用官方 MuleSoft 开发人员文档。
那里可以找到很多 DataWeave 示例和完整的参考资料。
https://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-examples#json-to-xml https://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-reference-documentation
试试下面的 DataWeave
%dw 1.0
%output application/xml
---
{
root: {
node1: payload.root.OBJECT1.PARAM1 ++ ' ' ++ payload.root.OBJECT1.PARAM2,
args: {
(payload.root.OBJECT2 map {
paramrow: {
KEY: $.KEY,
VALUE: $.VALUE
}
})
},
details: {
(payload.root.OBJECT3 mapObject {
'$$': $
})
}
}
}
@mlucas67,是的,dataweave 表达式有效。
这是我试过的另一种方法。
%dw 1.0
%input payload application/json
%output application/xml
---
{
root: {(payload map {
node1: $.OBJECT1.PARAM1 ++ ' ' ++ $.OBJECT1.PARAM2,
args: {
($.OBJECT2 map paramrow: $)
},
details:
PARAM3: $.OBJECT3.PARAM3
})
}
}
感谢大家对此发表评论post。