这是输入字符串:
"
<OuterSet>\n
<Set>\n
<Id>krypton</Id>\n
<Name>Name1</Name>\n
</Set>\n
<Set>\n
<Id>chromium</Id>\n
<Name>Name2</Name>\n
</Set>\n
</OuterSet>"
我想要以下 JSON 输出:
[{"Id": "krypton","Name": "Name1"},
{"Id": "chromium","Name": "Name2"}]
答案 0 :(得分:1)
您的问题应该是如何将字符串中包含的XML文档真正转换为JSON。 您可以使用read运算符向DataWeave指示输入应该作为XML读取。然后选择正确的节点,使用选择器返回所有子元素的数组(OutSet。* Set)。
唯一的问题是字符串“\ n”,它们是新行字符的表示,但只是为输入添加了噪音。可能这表明输入是以某种方式转换的,而不是由XML工具包生成的。如果没有它们就无法获得输入,那么您也可以使用替换运算符来消除它们。如果输入是干净的XML,则可以使用有效负载。
示例:
%dw 1.0
%output application/json
---
read(payload replace /\\n/ with "", "application/xml").OuterSet.*Set
答案 1 :(得分:0)
在dataweave中有很多选项可以完成转换。在这里,您必须分两步完成:
replace
运算符删除换行符,并将\n
替换为""
map
运算符循环访问数据并根据您的要求进行映射。按照以下提示:
{
payload map {
Id: $.OuterSet.Set.Id,
Name: $.OuterSet.Set.Name
}