【问题标题】:Format JSON Payload for Multiple Arrays为多个数组格式化 JSON 有效负载
【发布时间】:2019-12-30 21:37:32
【问题描述】:

我需要将传入的有效负载 JSON 格式化为某种方式。下面给出了示例有效负载 JSON。

[
  {
    "value": {
      "States": [
        {
          "Name": "New South Wales",
          "Code": "NSW"
        }
      ]
    }
  },
  {
    "value": {
      "States": [
        {
          "Name": "Western Australia",
          "Code": "WA"
        }
      ]
    }
  }
]

下面给出了我想要得到的输出:

[
  {
    "SystemCode": "STATE",
    "Name": "StateName",
    "Code": "NSW"
  },
  {
    "SystemCode": "STATE",
    "Name": "StateName",
    "Code": "WA"
  }
]

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

【问题讨论】:

    标签: json mule session-variables dataweave mule-esb


    【解决方案1】:

    试试这个:

    %dw 1.0
    %output application/json
    ---
    payload.value.States map 
    {
        "SystemCode": "STATE",
        "Name": "StateName",
        "Code": $.Code[0]
    }
    

    【讨论】:

      【解决方案2】:

      试试这个:

      %dw 1.0
      %output application/json
      
      %var codes = payload..Code
      
      %var baseObj = {
          "SystemCode" : "STATE",
          "Name"       : "StateName"
      }
      ---
      codes map (baseObj ++ {"Code": $})
      

      将其设置为会话变量:

      <dw:transform-message>
        <dw:set-session-variable variableName="sessionVarName">
          <![CDATA[
            <YOUR CODE HERE>
          ]]>
        </dw:set-session-variable>
      </dw:transform-message>
      

      【讨论】:

      • 非常感谢您的回复。执行时出现此错误。发现“扁平化”运算符的类型不匹配:需要空值:数组
      • 你能否让我知道扁平化如何适用于以下数组:“Codes”:[ {“CodeValue”:“TRA”},{“CodeValue”:“MED”}
      • 实际上你甚至不需要展平。试试我编辑的版本,它使用后代选择器:docs.mulesoft.com/mule-runtime/3.9/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多