【问题标题】:How to merge json objects based on a common value using dataweave 2.0如何使用 dataweave 2.0 基于公共值合并 json 对象
【发布时间】:2021-10-01 20:20:49
【问题描述】:

我有一个以下 json 有效负载,其中一些具有相同的键值对。如果它们具有相同的键值对,我想使用 dataweave 合并这些对象

输入:

[
    {
      "id": "123",
      "phoneNumber": "123456789",
      "mobileNumber": "987654321",
      "email": "abc@abc.com"
    },
    {
      "id": "234",
      "custID": "123451234"
    },
    {
      "id": "123",
      "user": "user1"
    }
]

预期输出:

[
    {
      "id": "123",
      "phoneNumber": "123456789",
      "mobileNumber": "987654321",
      "email": "abc@abc.com",
      "user": "user1"
    },
    {
      "id": "234",
      "custID": "123451234"
    }
]

提前致谢

【问题讨论】:

    标签: dataweave mule4


    【解决方案1】:

    您可以按 id 分组,提取组并根据每个组的项目数映射每个组。如果不止一个,您可以使用 reduce 来创建单个对象,但我们需要删除重复的“id”键。

    %dw 2.0
    output application/json
    ---
    payload groupBy ((item, index) -> item.id)
        pluck ((value, key, index) ->  value)
        map (if (sizeOf($)>1) 
            $ reduce ((item, accumulator={}) -> accumulator - "id" ++ (item))
            else $[0]
        )
    

    输出:

    [
      {
        "phoneNumber": "123456789",
        "mobileNumber": "987654321",
        "email": "abc@abc.com",
        "id": "123",
        "user": "user1"
      },
      {
        "id": "234",
        "custID": "123451234"
      }
    ]
    

    【讨论】:

      猜你喜欢
      • 2022-11-28
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 2023-02-13
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多