【问题标题】:Logic App - Struggling with Compose JSON and Append to Array逻辑应用程序 - 努力编写 JSON 并追加到数组
【发布时间】:2020-10-19 03:58:41
【问题描述】:

我正在构建一个逻辑应用程序,它将从源获取 JSON 数据,然后转换数据,然后将转换后的数据 POST 到目标。

我正在努力的部分是,我有一个看起来像这样的源数据:

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

...我想转换成这种格式:

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

有人可以帮忙解决我应该在我的逻辑应用程序中使用的步骤吗?

提前感谢任何帮助。

【问题讨论】:

  • 嗨,怎么样?您的问题解决了吗?

标签: json azure azure-logic-apps


【解决方案1】:

您可以使用Inline Code action 来通过 JS 代码处理您想要的 JSON 对象。

我也做了一些测试,这是我的逻辑应用程序,用于快速测试:

我的这个案例的js代码:

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

结果:

【讨论】:

  • 感谢斯坦利和达曼。有效。但是,我仍在考虑一些不使用任何内联代码操作的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
相关资源
最近更新 更多