user13747070
user13747070

Reputation:

Logic App - Struggling with Compose JSON and Append to Array

I'm building a Logic App which will GET JSON data from a source, then transform the data and then POST the transformed data to the destination.

The part I'm struggling is, I have a source data that looks like:

{
    "Project_Number": "1",
    "Employee_ID": "123"    
},
{
    "Project_Number": "1",
    "Employee_ID": "456"
},
{
    "Project_Number": "2",
    "Employee_ID": "789"
},
{
    "Project_Number": "2",
    "Employee_ID": "123"
}

... which I want to transform into this format:

{
    "Project_ID": "1",
    "Project_Assignment":
    [
        {
            "Employee_Number": "123",
            "Employee_Number": "456"
        }
    ]
},
{
    "Project_ID": "2",
    "Project_Assignment":
    [
        {
            "Employee_Number": "789",
            "Employee_Number": "123"
        }
    ]
}

Can someone please help with the steps I should be using in my Logic App.

Any help is appreciated in advance.

Upvotes: 1

Views: 1326

Answers (1)

Stanley Gong
Stanley Gong

Reputation: 12153

You can use Inline Code action to handle your JSON object as you want by JS code.

I also did some test on my side and this is my Logic App for a quick test:

enter image description here

my js code for this case:

var source=[{
    "Project_Number": "1",
    "Employee_ID": "123"    
},
{
    "Project_Number": "1",
    "Employee_ID": "456"
},
{
    "Project_Number": "2",
    "Employee_ID": "789"
},
{
    "Project_Number": "2",
    "Employee_ID": "123"
}];

var allPjNumbers =[];
var result=[];

source.forEach(sitem=>{
    if(!allPjNumbers.includes(sitem["Project_Number"])){
        allPjNumbers.push(sitem["Project_Number"]);
    }
});

allPjNumbers.forEach(pjNumber => {
    var item = {
        "Project_ID":pjNumber,
        "Project_Assignment":[]
    };

    source.forEach(sitem=>{
        if(sitem.Project_Number == pjNumber){
            item.Project_Assignment.push({"Employee_Number": sitem.Employee_ID})
        }
    });

    result.push(item);
});
    
return result

Result: enter image description here

Upvotes: 1

Related Questions