我有一个来自“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了解使用详细信息。
我用以下表达式得到了这个,我真的不喜欢这个
first(xpath(xml(addProperty(json('{}'), 'obj', item())), '//obj/Name[1]/text()'))
Run Code Online (Sandbox Code Playgroud)
有没有其他简单的方法来解决我的问题。提前致谢
对于这个问题,似乎您直接从“ 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 ”循环body“ Parse JSON ”,并使用“ Parse JSON ”的属性设置“ Value ”框。Name
| 归档时间: |
|
| 查看次数: |
13438 次 |
| 最近记录: |