使用dataweave将字符串转换为JSON对象

时间:2017-08-16 21:45:52

标签: dataweave

这是输入字符串:

"
<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"}]

2 个答案:

答案 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中有很多选项可以完成转换。在这里,您必须分两步完成:

  1. 使用replace运算符删除换行符,并将\n替换为""
  2. 使用Dataweave map运算符循环访问数据并根据您的要求进行映射。
  3. 按照以下提示:

    {
    payload map {
    Id: $.OuterSet.Set.Id,
    Name: $.OuterSet.Set.Name
    }