【问题标题】:How to create JSON object dynamically in Azure Logic Apps?如何在 Azure 逻辑应用中动态创建 JSON 对象?
【发布时间】:2020-12-01 21:12:32
【问题描述】:

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

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

编辑:

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

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

这是一个简单的带有键值对的 json 对象。

我想为每个循环设置对象属性。我从 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 中的自定义字段名称)

我尝试过使用 compose 步骤:

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

稍后将变量对象设置为撰写输出,但不能正常工作。结果对象没有设置所有属性。我的想法是在 for each 循环中设置所有对象属性。

我做错了什么?

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

提前致谢!

【问题讨论】:

  • 您好,我对您的情况有些困惑。您能否提供您的自定义字段格式示例?或者提供一些你当前逻辑应用的截图?
  • 感谢您的回复@HuryShen。我已经编辑了帖子以添加更多信息
  • 好的,我会检查你的更新要求。
  • 您的描述似乎有点复杂。我还有两点不明白:1.你没有提到如何匹配idCustomField。 2.数组中并不是所有的item都有text这个字段,那么对于没有text字段的item你要怎么处理呢。
  • 首先,我调用 Trello API 来获取所有 customFields(json 数组)。 for each 使用此数组迭代单个 customField。在每次迭代中,我进行了第二次 API 调用以获取自定义字段的定义(使用 idCustomField)并返回一个带有字段名称和其他定义的 json。我已经使用嵌套条件(字段可能是文本、日期或数字)解决了没有文本字段的项目。我设法在每次迭代中正确获取字段名称及其值,但我面临将这些值设置为对象属性的问题

标签: azure-logic-apps


【解决方案1】:

你应该使用

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

【讨论】:

  • 我正在解析 json 的“值”子字符串以获取文本、日期和数字值。我已经尝试过您的建议,但没有解析值子字符串,但仍然无法正常工作
  • 使用字符串变量来捕获 customFieldName 和 customFieldValue,我尝试使用 setProperty(variables('Object'),variables('customFieldName'),variables('customFieldValue')) ,但也没有工作
  • 嗨@HugoMorillo 错误信息是什么?能否提供setProperty(variables('Object'),variables('customFieldName'),variables('customFieldValue'))的动作截图?
  • 我没有收到错误消息。只是不像我预期的那样工作。工作流程相当大,但我做了一些截图: CustomFieldName 变量:imgur.com/toNIiJW CustomFieldValue 变量:imgur.com/wzI8ZEK setProperty(variables('Object'),variables('customFieldName'),variables('customFieldValue')):@987654325 @我在for each循环里面设置了两个变量的值,循环的最后一步是一个Compose步骤里面的setProperty调用
  • 谢谢@HuryShen!这就是问题所在。现在正在按我的预期工作。非常感谢。我在这个错误中挣扎了很多个晚上
猜你喜欢
  • 2021-04-13
  • 2022-09-29
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多