使用 dataweave 创建 json 数组

Create json array using dataweave

如果我有xml这样....

<Root>
  <Authority>Water</Authority>
  <Sanctions>
    <Sanction>
      <SanctionCode>11</SanctionCode>
      <SanctionDesc>First Sanction</SanctionDesc>
    </Sanction>
    <Sanction>
      <SanctionCode>11</SanctionCode>
      <SanctionDesc>Second Sanction</SanctionDesc>
    </Sanction>          
  </Sanctions>
</Root>

如何使用 DataWeave 创建一个 json 仅使用 SanctionDesc 的制裁数组?

我试过了,但不对...

%dw 1.0
%output application/json
---
records: payload.Root map {
   Authority: $.Authority,
   sanctions: $.Sanctions.Sanction map [$.SanctionDesc]
}

我希望我的输出看起来像这样...

{
    "records": [{
        "Authority": "Water",
        "sanctions": ["First Sanction", "Second Sanction"]
    }]
}

试试这个

%dw 1.0
%output application/json
---
records: {
   Authority: payload.Root.Authority,
   sanctions: payload.Root.Sanctions..SanctionDesc
}

%dw 1.0
%output application/json
---
records: {
   Authority: payload.Root.Authority,
   sanctions: payload.Root.Sanctions.*Sanction map $.SanctionDesc
}

希望对您有所帮助。

理解映射运算符是从输入负载中挑选元素的关键。 Map 运算符遍历左侧的所有数组元素,我们可以从右侧选择值,示例来自 Mulesoft portal

%dw 1.0

%输出application/json

用户:["john"、"peter"、"matt"] 映射((firstName, position)-> position ++ ":" ++ upper firstName)

输出: { "users": [ “0:约翰”, “1:彼得”, “2:马特” ] }

见下文 link: https://docs.mulesoft.com/mule-user-guide/v/3.8/dataweave-operators#map