Jsonpath - 使用表达式访问数组项
Jsonpath - Accessing array item using expression
我正在使用 AWS Step Functions,它利用 JSONPath 提供 JSON 路径。我有以下输入:
{
"response": {
"isSuccess": true,
"error": "",
"body": {
"count": 2,
"fields": [
{
"fieldId": 1,
"tabId": 100,
"title": "First Name"
},
{
"fieldId": 2,
"tabId": 100,
"title": "Last Name"
}
]
}
},
"iteration": {
"totalCount": 2,
"currentCount": 0,
"step": 1
}
}
我想查询字段数组为:
$.response.body.fields[$.iteration.currentCount]
作为迭代的一部分,currentCount 的值递增 1。
尝试使用上述内容时出现无效的 XPath 异常。
有人可以就如何提供动态 属性 值来读取数组值提出建议吗?
如 https://github.com/json-path/JsonPath#operators 所述,您只能使用数字索引数组。但是,您可以使用过滤器表达式 select 数组中的特定项目,如下所示。
假设您有另一个表示索引的字段,例如:
{
"index": 0,
"fieldId": 2,
"tabId": 100,
"title": "Last Name"
}
然后你可以做
$.response.body.fields[?(@.index==$.iteration.currentCount)]
我正在使用 AWS Step Functions,它利用 JSONPath 提供 JSON 路径。我有以下输入:
{
"response": {
"isSuccess": true,
"error": "",
"body": {
"count": 2,
"fields": [
{
"fieldId": 1,
"tabId": 100,
"title": "First Name"
},
{
"fieldId": 2,
"tabId": 100,
"title": "Last Name"
}
]
}
},
"iteration": {
"totalCount": 2,
"currentCount": 0,
"step": 1
}
}
我想查询字段数组为:
$.response.body.fields[$.iteration.currentCount]
作为迭代的一部分,currentCount 的值递增 1。 尝试使用上述内容时出现无效的 XPath 异常。
有人可以就如何提供动态 属性 值来读取数组值提出建议吗?
如 https://github.com/json-path/JsonPath#operators 所述,您只能使用数字索引数组。但是,您可以使用过滤器表达式 select 数组中的特定项目,如下所示。
假设您有另一个表示索引的字段,例如:
{
"index": 0,
"fieldId": 2,
"tabId": 100,
"title": "Last Name"
}
然后你可以做
$.response.body.fields[?(@.index==$.iteration.currentCount)]