【问题标题】:How can I iterate through a set specific properties of objects in an array of JSON-objects?如何遍历 JSON 对象数组中对象的一组特定属性?
【发布时间】:2019-11-06 22:19:04
【问题描述】:

在一个逻辑应用程序中,我有 2 个数组,它们都被解析为 JSON {"Name":{"type":"string"},"Id":{"type":"string"}}

(Array 1)
[
   {"Id": 1, "Name": "A"},
   {"Id": 2, "Name": "B"},
   {"Id": 3, "Name": "C"},
   {"Id": 4, "Name": "D"},
   {"Id": 5, "Name": "E"}
]

(Array 2)
[
   {"Name": "A"},
   {"Name": "D"}
]

我有一个 For each 循环,以 @body('Array_1') 作为输入。在循环内部,我首先有一个条件,我想检查类似

的内容
"expression": {
  "and": [
    {
      "not": {
        "contains": [
          "@body('Array_2')",
          "@items('Array_1')['Name']"
        ]
      }
    }
  ]
}

也就是说,我想看看Array 2中是否不包含某些名称

预期结果是条件应评估为“真”3 次(对于 name="B"、“C”和“E”),但它在所有检查中都评估为真 (5)。

如何遍历数组并检查属于我正在迭代的项目的属性?

【问题讨论】:

  • 您是否在逻辑应用的“For each”的“设置”中启用“并发控制”并将“并行度”设置为 1?如果“并发控制”设置为“关闭”,可能会导致您提到的这个问题。
  • 我会试试的。问题是我试图实现的目标是在逻辑应用程序的其他地方做,得到预期的结果,而不改变你正在谈论的参数。唯一的区别是“Array 1”没有“Id”属性,让我相信我错误地访问了“Array 1”中对象的属性。编辑:试过了。不幸的是,同样的错误,失败的时间更长。
  • 嗨,Anders,我已经在回答区发布了解决方案,请试一试。如果还有问题,请告诉我。

标签: azure azure-functions azure-logic-apps


【解决方案1】:

您可以参考我在逻辑应用程序中显示的“For each”,如下所示:

“fx string()”是:

而“条件”的第二个框是:

希望对你的问题有所帮助~

【讨论】:

  • 感谢您提供解决方案!我发现了我的问题。我的数组实际上是在像 {"body":[...]} 这样的 JSON 对象中,但我认为在 Logic App 中使用“body”表达式时,我会直接访问 body“key”中的数组,这并非如此。解决方案是遍历 body('Array_1')['body'] 并在表达式中使用 body('Array_2')['body'] 。再次感谢!
  • 嗨@AndersKnudsen,我很高兴听到这个消息。我以为你的 json 在数组中但不在对象中,所以我在逻辑应用程序中将 Array_2 转换为字符串,以判断 Array_1 中是否包含“名称”。总之就是最好的结果了,加油~
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多