【问题标题】:How to compare Array of JSON Objects using DataWeave and return the indexes如何使用 DataWeave 比较 JSON 对象数组并返回索引
【发布时间】:2020-06-26 02:57:37
【问题描述】:

我知道有很多 DataWeave 函数可以完成这项工作。但是想找点东西给我用。

比较两个 JSON 对象数组并返回索引。

这里是payload1:[ { "a": 1 }, { "a": 2 }, { "a": 3 } ]和payload2:[{"a":2}]

所以我希望看到有效载荷1 的索引=1 的结果。有什么想法吗?

【问题讨论】:

    标签: dataweave mulesoft mule4


    【解决方案1】:

    您可以使用的一些函数是find 或dw::core::Arrays::indexOf。

    这满足您的初始要求:

    import indexOf from dw::core::Arrays
    var payload1 = [ { "a": 1 }, { "a": 2 }, { "a": 3 } ]
    var payload2 = [ {"a":2} ]
    ---
    "index=" ++ (payload1 indexOf payload2[0]) ++ " of payload1"
    

    这是一个更复杂的场景,使用find 获取多个元素的多个索引:

    var payload1 = [ { "a": 1 }, { "a": 2 }, { "a": 3 } , { "a": 2 }]
    var payload2 = [{ "a": 2 }, { "a": 3 }, { "a": 5 } ]
    ---
    { items: 
      payload2 reduce ((item, indexes = []) -> 
        do {
          var itemIndexes = payload1 find item
          ---
          if(isEmpty(itemIndexes))
            indexes 
          else
            indexes+ ( {
              item: item,
              indexes: (payload1 find item)
            })
        }
      )
    }
    

    输出如下:

    { "items": [
        {
          "item": { "a": 2 },
          "indexes": [ 1, 3 ]
        },{
          "item": { "a": 3 },
          "indexes": [ 2 ]
        }
    ]}
    

    【讨论】:

      猜你喜欢
      • 2022-11-28
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多