温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Merge elements in JSON within Mule 4
dataweave json mule mulesoft

其他 - 在Mule 4中合并JSON中的元素

发布于 2020-04-26 09:43:29

我有以下SQL Server选择查询:

SELECT s.RefId
          ,s.LocalId
          ,s.StateProvinceId
          ,s.SchoolName
          ,e.Email
          ,e.EmailType
      FROM SchoolInfo s
      LEFT OUTER JOIN SchoolEmail e
      ON    e.SchoolRefId = s.RefId
      WHERE s.RefId = :ref_id

在DataWeave中转换为JSON:

%dw 2.0
output application/json
---
payload

输出:

[
  {
    "StateProvinceId": "SA",
    "RefId": "7FDF722B-6BBA-4BF0-8205-A5380B269EF1",
    "EmailType": "prm",
    "LocalId": "1",
    "SchoolName": "Steve's School",
    "Email": "steven@email.com"
  },
  {
    "StateProvinceId": "SA",
    "RefId": "7FDF722B-6BBA-4BF0-8205-A5380B269EF1",
    "EmailType": "sec",
    "LocalId": "1",
    "SchoolName": "Steve's School",
    "Email": "test@gmail.com"
  }
]

但我希望将其与常见元素合并以生成所需的输出:

{
  "RefId": "7FDF722B-6BBA-4BF0-8205-A5380B269EF1",
  "LocalId": "1",
  "StateProvinceId": "SA",
  "SchoolName": "Steve's School",
  "Emails": [
    {
      "Email": "steven@email.com",
      "EmailType": "prm"
    },
    {
      "Email": "test@gmail.com",
      "EmailType": "sec"
    }
  ]
}

我如何在M子4中做到这一点?

谢谢,史蒂夫

查看更多

提问者
Steve
被浏览
20
Salim Khan 2020-02-09 11:36

甚至这个

%dw 2.0
output application/json
var Emails =  
    "Emails": payload map {
      Email: $.Email,
      EmailType: $.EmailType
}

---
payload distinctBy($.StateProvinceId) map {
  StateProvinceId: $.StateProvinceId,
  RefId: $.RefId,
  Emails:  Emails.Emails
}