Mule:How 将 json 个值的列表合并为一个

Mule:How to combine a list of json values into one

输入JSON

{
     "digital-profiles": [{
             "Id": "INTID1",
             "status": "ACTIVE",
             "cId": "12"
         },
         {
             "dId": "INTID2",
             "status": "barred",
             "cId": "13"
         },
         {
             "Id": "INTID3",
             "status": "ACTIVE",
             "cId": "14"
         }
     ]
 }

输出:

{
     "Results": {
             "NewId": "INTID1:ACTIVE,INTID2:barred,INTID3:ACTIVE"
         }
 } 

我正在尝试使用上面提到的输入来实现上面提到的输出 JSON。如何使用数据编织转换来实现这一点。任何帮助将不胜感激。

这是您可以做到的一种方式(代码未经测试,但目前正在处理非常相似的事情)

function ParseJSON(MyObject)
{
// parse incoming var into a JSON object.
var MyObjectParsed= JSON.parse(MyObject);
var i = 0;
var NewJSONstring = "{/"Results/": {/"NewId/":";

// for each profile 
for(;MyObjectParsed.digital-profiles[i];)
{
    NewJSONstring = NewJSONstring+ MyObjectParsed.digital-profiles[i].Id;
    NewJSONstring = NewJSONstring+ ':';
    NewJSONstring = NewJSONstring+ MyObjectParsed.digital-profiles[i].status;
    NewJSONstring = NewJSONstring+ ',';
    i++
}

return  NewJSONstring;

使用map and joinBy获得想要的输出。这对我有用

%dw 1.0
%output application/json
---
Results : {
    NewId : payload.digital-profiles map ($.Id ++ ':' ++ $.status) joinBy ','
}

希望对您有所帮助。