JSON-Path возвращает только один символ вместо полного значения - PullRequest
1 голос
/ 15 мая 2019

У меня проблема с выбором полного значения из определенного выбора фильтра.

Ввод JSON (из ответа github-api):

[
  {
    "name": "V2.X.X",
    "prerelease": true
  },
  {
    "name": "2.0.0",
    "prerelease": false
  },
  {
    "name": "1.9.0",
    "prerelease": false
  }
]

JSON-Path:

$.[?(@.prerelease==false)].name

Результат:

[
  "2.0.0",
  "1.9.0"
]

Мне нужна только первая запись ( "2.0.0" ), поэтому я попробовал это:

JSON-Path:

$.[?(@.prerelease==false)].name[0]

Но результат:

[
  "2",
  "1"
]

Есть идеи, как выбрать полную первую запись?

Я тестировал JSONPatch на https://jsonpath.com/

BR

apiMan

1 Ответ

2 голосов
/ 15 мая 2019

Боюсь, это известная проблема с jsonpath.

Смотрите здесь: https://github.com/json-path/JsonPath/issues/272 и https://github.com/json-path/JsonPath/issues/375

К сожалению, похоже, что это скоро исчезнет - проблема была поднята 2,5 года назад. Что раздражает, так это то, что $.[?(@.prerelease==false)].name[0] раньше работал в версии 0.9.1 jsonpath, а затем был удален в какой-то момент.

В настоящее время предлагается обходной путь - прочитать элементы вашего отфильтрованного выражения в коллекцию в памяти и выбрать первый, когда вы его возвращаете.

В любом случае, вы не первый, кто испытывает эту проблему, см .:

...