首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logicapp表达式读取动态Json路径读取子元素,其中父路径可能更改,但层次结构保持不变。

Logicapp表达式读取动态Json路径读取子元素,其中父路径可能更改,但层次结构保持不变。
EN

Stack Overflow用户
提问于 2022-09-30 13:02:42
回答 1查看 84关注 0票数 0

希望一切顺利。

我需要创建logicapp表达式,以便在json中读取子元素,其中元素和层次结构的名称保持不变,但父名可以更改。

例如: JSON-1:

代码语言:javascript
复制
{
  "root": {
    "abc1": {
      "abc2": [
        {
          "element": "value1",
          "element2": "value"
        },
        {
          "element": "value2",
          "element2": "valu2"
        }
      ]
    }
  }
}

JSON-2:

代码语言:javascript
复制
{
  "root": {
    "xyz1": {
      "xyz2": [
        {
          "element": "value1",
          "element2": "value"
        },
        {
          "element": "value2",
          "element2": "valu2"
        }
      ]
    }
  }
}

我尝试过这些方法,但没有运气方法-1:@{body(“”)?“_”_‘元素’方法-2:@{body(“”)?‘element’

如果有人遇到这种情况,请告诉我。在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-30 21:39:51

我倾向于发现将JSON转换为xml (至少在您的情况下)是最简单的解决方案。然后,当您这样做了,您就不能使用XPath来简单地进行选择。

从基本的角度来说..。

我已经定义了一个类型为xml(variables('JSON Object'))

  • Next,的变量,它包含您的JSON,然后使用这个表达式将JSON对象转换为,初始化一个变量称为数组类型的Elements (假设它们有多个)。设置该变量的表达式是智能的来源。该表达式是. xpath(xml(variables('XML')), '//element/text()'),它通过结果获取xpath(xml(variables('XML')), '//element/text()')循环中所有element节点的内部文本。

如果需要将其提升一个级别并获得第二个元素,则需要将xpath更改为更通用的查询,以便可以在每个数组中获得element2节点(以及3、4、5等)。

备注:,我坚持了你关于寻找element__的具体问题。

结果

这个定义(可以直接加载到租户中)演示了这种想法.

代码语言:javascript
复制
{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "For_Each_Element": {
                "actions": {
                    "Set_Element": {
                        "inputs": {
                            "name": "Element",
                            "value": "@{item()}"
                        },
                        "runAfter": {},
                        "type": "SetVariable"
                    }
                },
                "foreach": "@variables('Elements')",
                "runAfter": {
                    "Initialize_Element": [
                        "Succeeded"
                    ]
                },
                "type": "Foreach"
            },
            "Initialize_Element": {
                "inputs": {
                    "variables": [
                        {
                            "name": "Element",
                            "type": "string"
                        }
                    ]
                },
                "runAfter": {
                    "Initialize_Elements": [
                        "Succeeded"
                    ]
                },
                "type": "InitializeVariable"
            },
            "Initialize_Elements": {
                "inputs": {
                    "variables": [
                        {
                            "name": "Elements",
                            "type": "array",
                            "value": "@xpath(xml(variables('XML')), '//element/text()')"
                        }
                    ]
                },
                "runAfter": {
                    "Initialize_XML": [
                        "Succeeded"
                    ]
                },
                "type": "InitializeVariable"
            },
            "Initialize_JSON_Object": {
                "inputs": {
                    "variables": [
                        {
                            "name": "JSON Object",
                            "type": "object",
                            "value": {
                                "root": {
                                    "abc1": {
                                        "abc2": [
                                            {
                                                "element": "value1",
                                                "element2": "value"
                                            },
                                            {
                                                "element": "value2",
                                                "element2": "valu2"
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    ]
                },
                "runAfter": {},
                "type": "InitializeVariable"
            },
            "Initialize_XML": {
                "inputs": {
                    "variables": [
                        {
                            "name": "XML",
                            "type": "string",
                            "value": "@{xml(variables('JSON Object'))}"
                        }
                    ]
                },
                "runAfter": {
                    "Initialize_JSON_Object": [
                        "Succeeded"
                    ]
                },
                "type": "InitializeVariable"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {
            "ParameterTest1": {
                "defaultValue": "\"\"",
                "type": "String"
            }
        },
        "triggers": {
            "manual": {
                "inputs": {
                    "method": "GET",
                    "schema": {}
                },
                "kind": "Http",
                "type": "Request"
            }
        }
    },
    "parameters": {}
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73909221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档