如何在 Azure 逻辑应用程序中动态创建 JSON 对象?

How to create JSON object dynamically in Azure Logic Apps?

我在 Azure 逻辑应用程序中有一个工作流,它执行 API 调用以从 Trello 卡片获取自定义字段值。然后,我放了一个 'for each' 步骤来获取每个自定义字段的定义(字段名称)。这是通过调用 Trello API 的另一个方法来实现的。我想根据我从这些 API 调用中获得的值创建一个 JSON 对象。 JSON的格式很简单:

{
"name1": "value1",
"name2": "value2",
...
}

编辑:

我有一个具有此架构的初始对象:

 {
  "Cel": "",
  "City": "",
  "CreatedOn": "",
  "Lead": "",
  "Mail": "",
  "Brand": "",
  "Name": "",
  "Salesperson": ""
}

这是一个简单的 json 对象,有 key:value 对。

我想在 for each 循环中设置对象属性。我从 Trello API 获得了字段的值(return 是一个数组):

[{"id":"5fbdb5da1626b7499d690ebf","value":{"date":"2020-11-09T15:00:00.000Z"},"idCustomField":"5fbdb5cee93a775e4a9405e5","idModel":"5fa53d647b35d5744fd8b856","modelType":"card"},{"id":"5fa946e31680220774095ed9","idValue":"5fa9464bd260145aacba03ed","idCustomField":"5fa9462327f2c331a184a483","idModel":"5fa53d647b35d5744fd8b856","modelType":"card"},{"id":"5fa946e0dafc5b7ead25411a","value":{"text":"Lilia Noemi Cabral"},"idCustomField":"5fa9454303ee497b7b99772a","idModel":"5fa53d647b35d5744fd8b856","modelType":"card"},{"id":"5fa946bf8697d18d58b73ac1","value":{"text":"Tania"},"idCustomField":"5fa94518f410418c57662fd0","idModel":"5fa53d647b35d5744fd8b856","modelType":"card"},{"id":"5fa946c3a2ee2771d26ba30e","value":{"text":"tania@gmail.com"},"idCustomField":"5fa945088fc819708d157c5b","idModel":"5fa53d647b35d5744fd8b856","modelType":"card"},{"id":"5fa946bc38b469081857ea9a","value":{"text":"Asuncion"},"idCustomField":"5fa944fe9d7af62b3806c8b6","idModel":"5fa53d647b35d5744fd8b856","modelType":"card"},{"id":"5fa946b82bbaf938c4c3c341","value":{"number":"098234567"},"idCustomField":"5fa944e59527342399f460e2","idModel":"5fa53d647b35d5744fd8b856","modelType":"card"},{"id":"5fa946b32aad4d323ba0648e","value":{"text":"Tania Cardozo Olivera"},"idCustomField":"5fa944d779089c6ca5cf534b","idModel":"5fa53d647b35d5744fd8b856","modelType":"card"}]

我为每个步骤放置了一个来迭代和解析字段值。我通过再次调用 Trello API 获得了字段名称,return 此响应:

{"id":"5fa94518f410418c57662fd0","idModel":"5f988b8cb225cc7ac34deae9","modelType":"board","fieldGroup":"53eb88d2e4cde013cb9f03e7500ad1a00a4c82f153f9165f7b1ec554f4cc2d74","display":{"cardFront":true},"name":"Name","pos":81920,"type":"text","limits":{"customFieldOptions":{"perField":{"status":"ok","disableAt":50,"warnAt":45}}},"isSuggestedField":false}

于是,我匹配了idCustomField,得到了字段名和字段值。现在我想在初始声明的对象中设置 属性(每个 属性 名称等于 Trello 中的自定义字段名称)

我尝试使用以下组合步骤:

setProperty(variables('Object'),body('Parse_JSON')?['name'],body('Parse_JSON2')?['text'])

后来将变量对象设置为组合输出,但效果不佳。结果对象没有设置所有属性。我的想法是在 for each 循环中设置所有对象属性。

我可能做错了什么?

有没有办法在 Azure 逻辑应用程序中实现这一点?

提前致谢!

你应该使用

setProperty(variables('object'), body('Parse_JSON')?['name'], body('Parse_JSON_2')?['value']?['text'])

而不是

setProperty(variables('Object'),body('Parse_JSON')?['name'],body('Parse_JSON2')?['text'])

==================================更新== =================================

您的问题可能是由并行的“For each”循环 运行 引起的,因此请尝试执行以下步骤(注意:如果您执行此更改,当你想改回来的时候,点击你的逻辑应用的“保存”有时会显示错误信息。所以请创建另一个逻辑应用进行测试或备份逻辑应用):

点击“For each”循环的“设置”。 然后启用 Concurrency Control 并将 Degree of Parallelism 设置为 1