【问题标题】:dataweave array transformation to combine data with same key valuesdataweave 数组转换以组合具有相同键值的数据
【发布时间】:2017-11-17 21:03:15
【问题描述】:

我想将具有相同companyNamecompanyId 的所有项目列表合并。

我需要帮助处理数据,以便它将所有具有相同值的数据用于companyNamecompanyId,并将其组合到自己的数组中。

输入我期望的示例数据:

[{
    "companyName": "ABC company",
    "companyId": "123",
    "projectName": "project1",
    "levelCode": "893",
    "projectStatus": "2"

},
{
    "companyName": "ABC company",
    "companyId": "123",
    "projectName": "project2",
    "levelCode": "1386",
    "userId": "183",
    "projectStatus": "2"

},
{
    "companyName": "ABC company",
    "companyId": "123",
    "projectName": "project3",
    "levelCode": "1655",
    "userId": "183",
    "projectStatus": "1"

},
{
    "companyName": "ABC company",
    "companyId": "123",
    "projectName": "project4",
    "levelCode": "1865",
    "userId": "159",
    "projectStatus": "2"

}]

预期输出

处理所有数据后:注意所有涉及companyName“ABC公司”的项目现在都合并到一个数组(项目)中。

[
  {
    "companyName": "ABC company",
    "companyId": "123",
    "projects": {
      "projectName": "project1",
      "levelCode": "893",
      "projectStatus": "2"
    },
    {
      "projectName": "project2",
      "levelCode": "1386",
      "userId": "183",
      "projectStatus": "2"
    },
    {
      "projectName": "project3",
      "levelCode": "1655",
      "userId": "183",
      "projectStatus": "1"
    },
    {
      "projectName": "project4",
      "levelCode": "1865",
      "userId": "159",
      "projectStatus": "2"
    }
  }
]

【问题讨论】:

  • Shu:通常在 Stackoverflow 上,您会展示您已经尝试过的内容。您提到的文档以及您认为此过程可能涉及的内容。以后还要注意你的格式:你可以突出显示完整的 sn-p 代码,然后单击 { } 或键入 ctrl+k [cmd+k]。

标签: mule-component dataweave mule-esb


【解决方案1】:
This will work:

%dw 1.0
%output application/json
---
payload distinctBy $.companyName map ((result, IndexOfResult) -> {
    companyName: result.companyName,
    companyId: result.companyId,
    project: payload[?($.companyName == result.companyName)] map {
        projectName: $.projectName,
        levelCode: $.levelCode,
        userId: $.userId,
        projectStatus: $.projectStatus
    } 
})

【讨论】:

    【解决方案2】:

    看看这个。

    %dw 1.0
    %output application/json
    ---
    payload distinctBy $.CompanyName map {
        companyName: $.companyName,
        companyID: $.companyId,
        Projects: payload map {
            projectName: $.projectName,
            levelCode: $.levelCode,
            userId: $.userId,
            projectStatus: $.projectStatus
            }
    }
    

    【讨论】:

      【解决方案3】:

      您有 GroupBy 运算符,使用它可以轻松完成此操作。 这里需要按 companyName 和 companyId 分组 有效负载组通过 $.companyName,companyId

      请阅读以下链接以获取有关 groupby 运算符的详细信息。 https://docs.mulesoft.com/mule-user-guide/v/3.8/dataweave-operators#group-by

      【讨论】:

        猜你喜欢
        • 2018-02-23
        • 2015-01-04
        • 1970-01-01
        • 1970-01-01
        • 2014-03-12
        • 1970-01-01
        • 2011-08-18
        • 1970-01-01
        相关资源
        最近更新 更多