Jsonpath - доступ к элементу массива с помощью выражения - PullRequest
0 голосов
/ 29 января 2019

Я использую пошаговые функции AWS, которые используют 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 при попытке использовать вышеуказанное.

Может кто-нибудь подсказать, как предоставить динамическое значение свойства для чтения значений массива?

1 Ответ

0 голосов
/ 22 февраля 2019

Как описано в https://github.com/json-path/JsonPath#operators, вы можете индексировать массив только числом.Однако вы можете использовать выражение фильтра , чтобы выбрать конкретный элемент из массива следующим образом.

Предполагается, что у вас есть другое поле, обозначающее индекс, например:

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

Вы можете затем сделать

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

...