逻辑应用程序 - 在不同 JSON 数据源上引用和映射字段

Logic App - Refer and map fields on different JSON data sources

我有两个 JSON 数据源:

源数据 1:

{
    "result": [
        {
            "resource_list": "7961b907db9253045fbdf1fabf9619d4,55617907db9253045fbdf1fabf9619d2",
            "project": "11216",
            "project_manager": {
                "value": "55617907db9253045fbdf1fabf9619d2"
            }
        }
    ]
}

源数据 2:

{
    "result": [
        {
        "sys_id": "7961b907db9253045fbdf1fabf9619d4",
            "email": "test.user1@mysite.com"
        },
        {
            "sys_id": "55617907db9253045fbdf1fabf9619d2",
            "email": "test.user2@mysite.com"
        }
    ]
}

我想参考 "resource_list""project_manager" 源数据 1"sys_id" in Source Data 2 并从 [=30] 中获取 "email" =]Source Data 2,然后组成最终的 Output,如下所示:

输出:

[
    {
    "__metadata":
        {
        "uri": "ProjectCode"
        },
    "externalProject": "11216",
    "projectCodeAssignment":
        [
            {
            "__metadata":
                {
                "uri": "projectCodeAssignment"
                },
            "externalProjectAssignee": "test.user1@mysite.com"
            },
            {
            "__metadata":
                {
                "uri": "projectCodeAssignment"
                },
            "externalProjectAssignee": "test.user2@mysite.com"
            }
        ]
    }
]

是否可以完全在 Logic App 中完成此操作,而无需使用 Function App 或任何其他工具来执行它。

我给你写一个js脚本。为了快速演示,我省略了一些与 __metadata 相关的数据,似乎是一些硬代码,在这里不那么重要。试试下面的逻辑:

JS代码动作中的代码:

var body = workflowContext.trigger.outputs.body
var data1 = body.data1;
var data2 = body.data2;

var result = [];

data1.result.forEach(item =>{
    var resultItem = {};
    resultItem.externalProject = item.project;
    resultItem.projectCodeAssignment =[];
    
    var resourceIds = item.resource_list.split(',');
    resourceIds.forEach(id =>{
        var user = data2.result.find( ({ sys_id }) => sys_id === id );
        resultItem.projectCodeAssignment.push({"externalProjectAssignee": user.email})
    });
    result.push(resultItem);
    
})

return result;

Request Body(你的2个数据集在这里命名为data1data2):

{
    "data1": {
        "result": [{
                "resource_list": "7961b907db9253045fbdf1fabf9619d4,55617907db9253045fbdf1fabf9619d2",
                "project": "11216",
                "project_manager": {
                    "value": "55617907db9253045fbdf1fabf9619d2"
                }
            }
        ]
    },
    "data2": {
        "result": [{
                "sys_id": "7961b907db9253045fbdf1fabf9619d4",
                "email": "test.user1@mysite.com"
            }, {
                "sys_id": "55617907db9253045fbdf1fabf9619d2",
                "email": "test.user2@mysite.com"
            }
        ]
    }
}

结果: