格式化多个数组的JSON有效负载

Tri*_*ire 1 json session-variables mule dataweave mule-esb

我需要以某种方式格式化传入的有效负载JSON。有效载荷JSON示例如下所示。

[
  {
    "value": {
      "States": [
        {
          "Name": "New South Wales",
          "Code": "NSW"
        }
      ]
    }
  },
  {
    "value": {
      "States": [
        {
          "Name": "Western Australia",
          "Code": "WA"
        }
      ]
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

我想获得的输出如下:

[
  {
    "SystemCode": "STATE",
    "Name": "StateName",
    "Code": "NSW"
  },
  {
    "SystemCode": "STATE",
    "Name": "StateName",
    "Code": "WA"
  }
]
Run Code Online (Sandbox Code Playgroud)

如上所示,在输出中,SystemCodeName将保持不变,而Code值将根据传入的有效负载而变化。生成所需的输出后,我需要在会话变量中存储与JSON相同的内容。如何在Mule dataweave 1.0中实现此目标。 请注意,我可以使用不同的代码接收多个数组作为有效载荷。提前致谢。

jer*_*ney 6

尝试这个:

%dw 1.0
%output application/json

%var codes = payload..Code

%var baseObj = {
    "SystemCode" : "STATE",
    "Name"       : "StateName"
}
---
codes map (baseObj ++ {"Code": $})
Run Code Online (Sandbox Code Playgroud)

要将其设置为会话变量:

<dw:transform-message>
  <dw:set-session-variable variableName="sessionVarName">
    <![CDATA[
      <YOUR CODE HERE>
    ]]>
  </dw:set-session-variable>
</dw:transform-message>
Run Code Online (Sandbox Code Playgroud)