首页 > 解决方案 > Dataweave 从 groupBy 之后的值中删除 json 元素 | 骡子 3.9

问题描述

我正在尝试基于 dataweave 中的 groupBy 转换 xml,但是我还需要从输出中删除一些 json 属性。

输入json:

[   {
    "m": {
      "a": "a",
      "b": "b"
    },
    "tag1": "A",
    "tag2": "v1",
    "tag3": "v1"   },   {
    "m": {
      "a": "a",
      "b": "b"
    },
    "tag1": "A",
    "tag2": "v2",
    "tag3": "v2"   },   {
    "m": {
      "a": "a",
      "b": "b"
    },
    "tag1": "C",
    "tag2": "v3",
    "tag3": "v3"   } ]

输出json

 **{
  "A": [
    {
      "tag2": "v1",
      "tag3": "v1"
    },
    {
      "tag2": "v2",
      "tag3": "v2"
    }
  ],
  "C": {
    "tag2": "v3",
    "tag3": "v3"
  }
}**

我尝试了以下转换(Mule 3.9),但是无法删除 json 中的额外属性。

payload groupBy (item) -> item.tag1

感谢对此的任何建议,并可能解释如何实现这一点。

标签: muledataweavemulesoft

解决方案


遍历对象的方法是使用 mapObject ,然后您可以过滤对象以删除不需要的元素

{a: [1,2,3], b: [2,3]} mapObject ((value,key) -> 
    {
       (key): value filter ((value, index) -> value > 2)
    }
 )

这将输出

{
  "a": [
    3
  ],
  "b": [
    3
  ]
}

推荐阅读