Reputation:
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
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:
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
Upvotes: 1