【问题标题】:Dataweave filtering array by another array valuesDataweave 通过另一个数组值过滤数组
【发布时间】:2020-07-23 10:33:22
【问题描述】:

我想根据另一个数组值过滤一个数组。我想根据 ["BP,SH,PY"] 列表中的键值“KNVP-PARVW”过滤输入数组

这是输入:

[{
    "KNVP-KUNNR": "100098",
    "KNVP-VTWEG": "A1",
    "KNVP-PARVW": "BP",
    "KNVP-PARZA": "000",
    "KNVP-KUNN2": "200115",
    "KNVP-DEFPA": ""
  },
  {
    "KNVP-KUNNR": "100098",
    "KNVP-VTWEG": "A1",
    "KNVP-PARVW": "SH",
    "KNVP-PARZA": "001",
    "KNVP-KUNN2": "200115",
    "KNVP-DEFPA": ""
  },
  {
    "KNVP-KUNNR": "100098",
    "KNVP-VTWEG": "A1",
    "KNVP-PARVW": "ZR",
    "KNVP-PARZA": "000",
    "KNVP-KUNN2": "256",
    "KNVP-DEFPA": ""
  }]

这是我的数据编织代码:

%dw 2.0
var relationList=["BP,SH,PY"]
output application/json
---
payload filter (  relationList contains  $."KNVP-PARVW" )

【问题讨论】:

    标签: mule dataweave mulesoft


    【解决方案1】:

    虽然["BP,SH,PY"] 是一个列表,但它只有一个元素是字符串。要按照您的意图使用contains(),它必须是$."KNVP-PARVW" 的有效值列表:

    %dw 2.0
    var relationList=["BP","SH","PY"]
    output application/json
    ---
    payload filter (  relationList contains  $."KNVP-PARVW" )
    

    输出:

    [
      {
        "KNVP-KUNNR": "100098",
        "KNVP-VTWEG": "A1",
        "KNVP-PARVW": "BP",
        "KNVP-PARZA": "000",
        "KNVP-KUNN2": "200115",
        "KNVP-DEFPA": ""
      },
      {
        "KNVP-KUNNR": "100098",
        "KNVP-VTWEG": "A1",
        "KNVP-PARVW": "SH",
        "KNVP-PARZA": "001",
        "KNVP-KUNN2": "200115",
        "KNVP-DEFPA": ""
      }
    ]
    

    【讨论】:

      【解决方案2】:

      知道了,var relationshipList 应该如下所示

      var relationList="BP,SH,PY"
      

      【讨论】:

      • 这是一个糟糕的解决方案。您将 contains() 与字符串一起使用,因此如果 $."KNVP-PARVW" == "P,S" 则为真,因为它是关系列表的有效子字符串。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 2021-07-29
      • 2019-05-05
      相关资源
      最近更新 更多