Azure 逻辑应用程序:检查 json 对象中是否存在属性

sha*_*ool 5 azure-logic-apps

我有一个来自“SQLServer GetRecords (V2)”操作的 JSON,如下所示。不幸的是,响应将不包含具有空值的字段。在我的示例中,某些项目的“名称”字段为空。

[
  {
    "@odata.etag": "",
    "ItemInternalId": "378fd3bc-0cd4-4171-8e7d-462461086580",
    "RowID": 1,
    "Name": "1234"
  },
  {
    "@odata.etag": "",
    "ItemInternalId": "378fd3bc-0cd4-4171-8e7d-462461086580",
    "RowID": 1
  }, ...
}
Run Code Online (Sandbox Code Playgroud)

我想迭代这些项目并将每个项目传递到另一个 HTTP 端点。

当我使用item()['Name']item()?['Name']访问名称字段时,第二个项目将失败

无法评估模板语言表达式,因为属性“名称”不存在,可用属性是...

我看到很多人使用xpath函数结合xml函数来检索值。

https://learn.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference

但是当我使用像xpath(xml(item()), '/Name')这样的想法时,它会抛出一个错误说

模板语言函数“xml”参数无效。提供的值无法转换为 XML:“JSON 根对象具有属性“@odata.etag”,该属性将转换为属性。根对象不能具有任何属性属性。考虑指定 DeserializeRootElementName。路径“['@odata.etag']'。”。请参阅https://aka.ms/logicexpressions#xml了解使用详细信息。

更新1

我用以下表达式得到了这个,我真的不喜欢这个

first(xpath(xml(addProperty(json('{}'), 'obj', item())), '//obj/Name[1]/text()'))
Run Code Online (Sandbox Code Playgroud)

有没有其他简单的方法来解决我的问题。提前致谢

Hur*_*hen 3

对于这个问题,似乎您直接从“ SQLServer GetRecords (V2) ”的响应中获得“ For every ”循环中的“ Name ”值。我们可以使用“解析 JSON ”操作来轻松解决这个问题。请参考下面我的逻辑应用程序:

1.我初始化一个变量存储与您相同的json数据来模拟来自“ SQLServer GetRecords (V2) ”的响应。

在此输入图像描述

2.然后添加“ Parse JSON ”操作来解析json数据。我们可以单击“使用示例有效负载生成架构”按钮并将 jsondata 复制到其中。它将自动生成架构。架构如下所示(请注意架构指定 required 属性中是否需要这些字段)。

{
    "items": {
        "properties": {
            "@@odata.etag": {
                "type": "string"
            },
            "ItemInternalId": {
                "type": "string"
            },
            "Name": {
                "type": "string"
            },
            "RowID": {
                "type": "integer"
            }
        },
        "required": [
            "@@odata.etag",
            "ItemInternalId",
            "RowID"
        ],
        "type": "object"
    },
    "type": "array"
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

3.现在使用“ For every ”循环bodyParse JSON ”,并使用“ Parse JSON ”的属性设置“ Value ”框。Name

在此输入图像描述

4.运行逻辑应用程序,它工作正常,没有任何错误消息。 在此输入图像描述 在此输入图像描述