Mule Dataweave %1.0 中的条件过滤

Conditional filtering in Mule Dataweave %1.0

我正在尝试过滤来自 JSON 数组的特定值。我的示例数组如下:

"source":[
  {
    "value": {
      "Type": [
        {
          "val": "Primary",
          "code": "PRI"
        }
      ],
      "Value": [
        {
          "val": "PHAR",
          "Code": "Pharmacy"
        }
      ]
    }
  },
  {
    "value": {
      "Type": [
        {
          "val": "Secondary",
          "code": "SEC"
        }
      ],
      "Value": [
        {
          "val": "HOSP",
          "Code": "Hospital"
        }
      ]
    }
  }
]

在上面,我需要读取第一次出现的 source.value.Value.val 其中 source.value.Type.code=="SEC" 我的数组可以有多个代码,如 "PRI"、"SEC" 等,我只需要获取代码 = "SEC" 的数据(第一次出现)

您可以使用过滤器函数来过滤您的数组。

%dw 1.0
%output application/json
---
{
 output: payload.source filter ($.value.Type[0].code == "SEC")

}

以上代码将产生以下输出:

{
  "output": [
    {
      "value": {
        "Type": [
          {
            "val": "Secondary",
            "code": "SEC"
          }
        ],
        "Value": [
          {
            "val": "HOSP",
            "Code": "Hospital"
          }
        ]
      }
    }
  ]
}

修正案:这是新的一段代码,它只会给你你正在寻找的值,而不是整个数组

%dw 1.0
%output application/json skipNullOn="everywhere"
---
{
    (payload.source default [] map (source, indexOfSource) -> {
        output: source.value.Value[0].val when source.value.Type[0].code == "SEC" otherwise null
    }) 
}

上面这段代码的输出是:

{
  "output": "HOSP"
}