Warm tip: This article is reproduced from serverfault.com, please click

其他-如何在Azure Logic应用中动态创建JSON对象?

(其他 - How to create JSON object dynamically in Azure Logic Apps?)

发布于 2020-12-01 21:12:32

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

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

编辑:

我有一个初始对象与此模式:

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

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

我想在每个循环的a内设置对象属性。我从Trello API获得了字段的值(返回一个数组):

[{"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的调用获得了字段名称,该调用返回了以下响应:

{"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'])

然后将变量对象设置为compose输出,但效果不佳。结果对象未设置所有属性。我的想法是为每个循环设置内的所有对象属性。

我可能做错了什么?

有没有一种方法可以在Azure Logic Apps中实现这一目标?

提前致谢!

Questioner
Hugo Morillo
Viewed
1
Hury Shen 2020-12-02 12:21:52

你应该用

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

代替

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

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

你的问题可能是由并行运行的“对于每个”循环引起的,因此请尝试以下步骤(注意:如果进行此更改,当你要更改回去时,有时,当你单击“保存”时会显示错误消息逻辑应用”。因此,请创建另一个逻辑应用进行测试或制作逻辑应用的备份副本):

单击“对于每个”循环的“设置”。 在此处输入图片说明 然后启用Concurrency Control并设置Degree of Parallelism1在此处输入图片说明