首页 > 解决方案 > 如何在dataweave中转换子项

问题描述

我有以下输入

{
  "error1": [
    {
      "store": "1201",
      "DocumentNumber": "FF15974433790786634518"
    },
    {
      "store": "1201",
      "DocumentNumber": "FF15974433790786634519"
    },
    {
      "store": "1201",
      "DocumentNumber": "FF15974433790786634520"
    },
    {
      "store": "1202",
      "DocumentNumber": "FF15974433790786634520"
    }
  ],
  "error2": [
    {
      "store": "1201",
      "DocumentNumber": "FF15974433790786634518"
    }],
  error3:[]
}

我想导出以下结果

{
    "error1": [{
            "store": "1201",
            "DocumentNumber": ["FF15974433790786634518", "FF15974433790786634519", "FF15974433790786634520"]
        },
        {
            "store": "1202",
            "DocumentNumber": ["FF15974433790786634520"]
        }
    ],
    "error2": [{
        "store": "1201",
        "DocumentNumber": ["FF15974433790786634518"]
    }]
}

标签: dataweavemule4

解决方案


试试这个:

输入:

{
  "error1": [
    {
      "store": "1201",
      "DocumentNumber": "FF15974433790786634518"
    },
    {
      "store": "1201",
      "DocumentNumber": "FF15974433790786634519"
    },
    {
      "store": "1201",
      "DocumentNumber": "FF15974433790786634520"
    },
    {
      "store": "1202",
      "DocumentNumber": "FF15974433790786634520"
    }
  ],
  "error2": [
    {
      "store": "1201",
      "DocumentNumber": "FF15974433790786634518"
    }],
  "error3":[]
}

脚本:

%dw 2.0
output application/json
--- 
payload filterObject ($ !=[]) mapObject {
     ($$) : $ groupBy $.store mapObject {
            temp:{
                store: $.store[0],
                DocumentNumber: $.DocumentNumber
            
}} pluck($)
}

输出:

{
  "error1": [
    {
      "store": "1201",
      "DocumentNumber": [
        "FF15974433790786634518",
        "FF15974433790786634519",
        "FF15974433790786634520"
      ]
    },
    {
      "store": "1202",
      "DocumentNumber": [
        "FF15974433790786634520"
      ]
    }
  ],
  "error2": [
    {
      "store": "1201",
      "DocumentNumber": [
        "FF15974433790786634518"
      ]
    }
  ]
}

推荐阅读