LogicApp/JavaScript - 将 JSON 数据拆分为多个对象和数组

LogicApp/JavaScript - Split JSON data to multiple objects and arrays

我有以下 JSON 数据从源系统进入我的逻辑应用程序:

[
   {
      "project":"abc",
      "assignees":"123,456"
   },
   {
      "project":"xyz",
      "assignees":"123,468"
   }
]

我想拆分“受让人”,在对象中创建数组,并生成以下最终输出:

[
   {
      "metadata":{
         "type":"project"
      },
      "name":"Project ABC",
      "assignee":[
         {
            "metadata":{
               "type":"assignment"
            },
            "employeeId":"123"
         },
         {
            "metadata":{
               "type":"assignment"
            },
            "employeeId":"123"
         }
      ]
   },
   {
      "metadata":{
         "type":"project"
      },
      "name":"Project ABC",
      "assignee":[
         {
            "metadata":{
               "type":"assignment"
            },
            "employeeId":"123"
         },
         {
            "metadata":{
               "type":"assignment"
            },
            "employeeId":"468"
         }
      ]
   }
]

这只能在逻辑应用程序中实现吗?如果不能,是否可以使用内联 JavaScript 代码实现?如何实现?

我对 LogicApp 及其工作原理一无所知,但如果你想要的只是 javascript 可以进行此转换的代码,你可以这样做:

const src=[
   {
      "project":"abc",
      "assignees":"123,456"
   },
   {
      "project":"xyz",
      "assignees":"123,468"
   }
]
const transformed=src.map(entry=>({
                            "metadata":{type:"project"},
                            name:"Project "+entry.project.toUpperCase(),
                            assignee:entry.assignees.split(",").map(assignee=>({
                                                            metadata:{type:"assignment"},
                                                            emplyeeId:assignee
                                                            }))
                            }))

我初始化了一个名为 source 的变量来存储与您相同的数据源。

此处提供内联javascript代码示例供您参考:

var source = workflowContext.actions.Initialize_variable.inputs.variables[0].value;

var result = [];

source.forEach(sItem=>{
    var resultItem = {
        "metadata":{
         "type":"project"
        },
        "name":"Project " + sItem.project.toUpperCase()
    }

    var assignee = [];
    var assigneesSplit = sItem.assignees.split(",");
    
    assigneesSplit.forEach(item=>{
        var assigneItem = {
            "metadata":{
               "type":"assignment"
            },
            "employeeId":item
        }
        assignee.push(assigneItem);
    });
    resultItem.assignee = assignee;
    
    result.push(resultItem);
});

return result;

在运行逻辑应用程序之后,我们可以获得如下结果数据:

[
  {
    "metadata": {
      "type": "project"
    },
    "name": "Project ABC",
    "assignee": [
      {
        "metadata": {
          "type": "assignment"
        },
        "employeeId": "123"
      },
      {
        "metadata": {
          "type": "assignment"
        },
        "employeeId": "456"
      }
    ]
  },
  {
    "metadata": {
      "type": "project"
    },
    "name": "Project XYZ",
    "assignee": [
      {
        "metadata": {
          "type": "assignment"
        },
        "employeeId": "123"
      },
      {
        "metadata": {
          "type": "assignment"
        },
        "employeeId": "468"
      }
    ]
  }
]

您预期的数据样本中似乎有一些错误(例如第一个 assignee 字段中的第二个项目名称和第二个 employeeId)。如果它们没有错字,请告诉我,我将修改我的 js 内联代码以实现您期望的 json 数据。