Jsonpath-使用表达式访问数组项

时间:2019-01-29 13:48:05

标签: json amazon-web-services jsonpath aws-step-functions

我正在使用利用JSONPath来提供JSON路径的AWS Step Functions。我有以下输入内容:

{
    "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异常。

有人可以建议如何提供动态属性值以读取数组值吗?

1 个答案:

答案 0 :(得分:1)

https://github.com/json-path/JsonPath#operators所述,您只能为带有数字的数组建立索引。但是,您可以使用过滤器表达式,如下所示从数组中选择特定项目。

假设您还有另一个表示索引的字段,例如:

{
  "index": 0,
  "fieldId": 2,
  "tabId": 100,
  "title": "Last Name"
}

然后您可以做

$.response.body.fields[?(@.index==$.iteration.currentCount)]