使用 dataweave 2.0 从 payload 中的数组中获取数据

Fetching data from arrays in payload using dataweave 2.0

**Input**
{
 "result": [
            [
              {
                "ID": "12345",
                "Name": "xyz",
              },
              {
                "ID": "12345",
                "Title": "abc",
               }
            ]
          ]
"result": [
            [
              {
                "ID": "67890",
                "Name": "pqr",
              }
            ]
          ]
          }

输出

正在尝试从负载中的数组中获取数据。输出数据应为 xml 格式 提前致谢

由于嵌套的关系,有点绕。最后我需要一个额外的 reduce() 来从数组转换为对象。 我还需要编辑输入,因为它不是有效的 JSON.

输入:

{
    "result": [
            [
              {
                "ID": "12345",
                "Name": "xyz"
              },
              {
                "ID": "12345",
                "Title": "abc"
               }
            ]
          ],
    "result": [
            [
              {
                "ID": "67890",
                "Name": "pqr"
              }
            ]
          ]
}

脚本:

%dw 2.0
output application/xml
---
{
    result: 
        payload.*result flatMap 
            $ flatMap 
                $ flatMap ((item, index) -> 
                    { 
                        root: { 
                            ID: item.ID, 
                            Name: item.Name default item.Title
                        } 
                    }
                ) reduce ((item, accumulator) -> accumulator ++ item)    
}

输出:

<?xml version='1.0' encoding='UTF-8'?>
<result>
  <root>
    <ID>12345</ID>
    <Name>xyz</Name>
  </root>
  <root>
    <ID>12345</ID>
    <Name>abc</Name>
  </root>
  <root>
    <ID>67890</ID>
    <Name>pqr</Name>
  </root>
</result>