【问题标题】:How to retrieve and update JSON value In LogicApp using 'For Each'如何使用“For Each”在 LogicApp 中检索和更新 JSON 值
【发布时间】:2020-12-01 15:44:09
【问题描述】:

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

我希望定位并循环遍历数组中的值,定位嵌套值,然后使用 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”的嵌套字段?

任何帮助都很好

【问题讨论】:

    标签: json azure for-loop azure-logic-apps power-automate


    【解决方案1】:

    您有两种选择来进行编辑。

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

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

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

    第二个选项是使用inline code action

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

    【讨论】:

    • 嗨@samara 让我试试这个。谢谢
    • 对其他人来说可能很明显,但对我来说不是:setProperty 有效地返回一个新的 JSON 对象,与用作输入的对象不同,在该对象中进行了修改 - 即不是“更新”因此,更多的是克隆和修改行为。这意味着 setProperty 适用于初始化/设置变量(对象类型)或撰写操作。后续操作将引用变量集或 Compose 操作输出。
    猜你喜欢
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    相关资源
    最近更新 更多