首页 > 解决方案 > 如何使用“For Each”在 LogicApp 中检索和更新 JSON 值

问题描述

背景: 我希望在我的文档中循环、检索和更新项目

我希望找到并循环遍历数组中的值,找到嵌套值,然后使用 LogicApps 更新它们。我知道我走在正确的道路上,我只需要一点帮助。

1.这是文件。我希望遍历 A(其中有很多记录)并检索所有类别。

         "A": 
               [

                     { 
                       "category": "1"
                     }

               ] 

2.一旦我检索到类别,我希望循环遍历我找到的每个类别,然后更新它们的 id 和状态

  "category":"1"
  "box":
      [
         {
            "id": "update"
            "status": "update"

         }
    
      ]

我的方法和我所做的:

我相信我必须在 A 上做一个“For Each”循环。 我只是不确定如何在我想要检索所有“类别”字段的 logicApp 中编写,然后是框字段中的字段。

然后,一旦我获得所有“类别”字段,我必须使用字符串更新此数组中的 id 和状态。

我想改变

   "id":     "update" to    "id" : "number"

和改变

    "status": "update"  to   "status": "linked"

我相信我必须:初始化、解析并执行 For 循环

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

我相信我必须:初始化、解析并执行一个“For Each”循环,但是我如何告诉逻辑应用我希望从嵌套的“A”中获取“类别”部分,然后一旦我有了“类别”部分然后更新其中的“id”和“status”的嵌套字段?

任何帮助都很棒

标签: jsonazurefor-loopazure-logic-appspower-automate

解决方案


您有两个选项可以进行编辑。

首先是传统的逻辑应用方式:

使用一组工作变量和setProperty()函数来更新值。一个变量来保存您当前正在编辑的部分,一个数组来保存到目前为止所做的工作。由于您使用的是嵌套数组,因此您需要两组变量——一组用于“A”内的数组,一组用于“box”内的数组。为了更新子属性,您只需嵌套setProperty()调用:setProperty(<object>['<parent-property>'], '<parent-property>', setProperty(<object>['parentProperty'], '<child-property>', <value>))

如果你还没有,你可能想看看这篇文章,因为它有一个类似的前提,但结构更简单一些:Updating Json Array in LogicApp

第二种选择是使用内联代码操作

在您的情况下,我可能会走这条路,因为所需操作的数量会显着下降,从而使应用程序更易于阅读并降低成本。只要您的数据不太大,您就可以在一个操作中完成所有编辑并简单地输出结果。如果你想保留一些结构或者你有一个大对象,你可以保留两者的元素——在你的“A”数组上使用循环,然后在 Javascript 中对该迭代进行更改。


推荐阅读