JSON 在 Mule 3 中变换

JSON transform in Mule 3

我有一个 JSON 负载,看起来像:

[{
  "CUSTOMERAP": [{
    "CUSTOMERID": [
      "7685940002,24424424,244322,1224,68"
    ]
  }, {
    "RATING": [
      "76859400022,24424424,244262,1234,68"
    ]
  }]
}, {
  "CLIENTAP": [{
    "CUSTOMERID": [
      "76859404002,24422424,246422,1254,68"
    ]
  }, {
    "RATING": [
      "76859400022,24422424,244522,1264,68"
    ]
  }]
}]

我想把它改成类似

的东西
[{
  "CUSTOMERAP": [{
    "ID": [
      "7685940002,24424424,244322,1224,68",
      "76859400022,24424424,244262,1234,68"
    ]
  }]
}, {
  "CLIENTAP": [{
    "ID": [
      "76859404002,24422424,246422,1254,68",
      "76859400022,24422424,244522,1264,68"
    ]
  }]
}]

我尝试使用 foreach 进行迭代,但无法使用 #[message.payload."title"] 单独获取标题,因为它们都不一样。

在 Web 浏览器的控制台中试试这个。创建一个 var jsonData

var jsonData = [
{
    "CUSTOMERAP": [{
            "CUSTOMERID": [
                "7685940002,24424424,244322,1224,68"
            ]
        },
        {
            "RATING": [
                "76859400022,24424424,244262,1234,68"
            ]
        }
    ]
},
{
    "CLIENTAP": [{
            "CUSTOMERID": [
                "76859404002,24422424,246422,1254,68"
            ]
        },
        {
            "RATING": [
                "76859400022,24422424,244522,1264,68"

            ]
        }
    ]
}
]

输入这个

jsonData[0].CUSTOMERAP[0].CUSTOMERID  

你会得到 ["7685940002,24424424,244322,1224,68"] 等等应用循环获取索引并获取所有值并创建一个新的 var jsonNewDataFormat 并根据需要分配它们

var jsonNewDataFormat = { Id : jsonData[0].CUSTOMERAP[0].CUSTOMERID }

如果您点击此按钮,您将获得新格式的数据,请尝试应用 Json。 Stringfy(google它)

jsonNewDataFormat[0].Id 

你的Expression transformer look like? See also, How to transform or modify a JSON payload in Mule ??

是什么

或者,您可以创建一个转换函数。这个好像也不是很难。

var data = [{
  "CUSTOMERAP": [{
    "CUSTOMERID": [
      "7685940002,24424424,244322,1224,68"
    ]
  }, {
    "RATING": [
      "76859400022,24424424,244262,1234,68"
    ]
  }]
}, {
  "CLIENTAP": [{
    "CUSTOMERID": [
      "76859404002,24422424,246422,1254,68"
    ]
  }, {
    "RATING": [
      "76859400022,24422424,244522,1264,68"
    ]
  }]
}];

function transformJson(jsonArr, groupingKey) {
  return jsonArr.map(itemOuter => {
    var wrapper = {}, grouping = {}, keyOuter = Object.keys(itemOuter)[0];
    grouping[groupingKey] = itemOuter[keyOuter].map(itemInner => {
      var keyInner = Object.keys(itemInner)[0];
      return itemInner[keyInner][0];
    });
    wrapper[keyOuter] = [grouping];
    return wrapper;
  });
}

console.log(transformJson(data, 'ID'));
.as-console-wrapper { top: 0; max-height: 100% !important; }