Проверка JSONPath

Выполните запрос JSONPath в браузере. Чтобы оформить документ, откройте форматирование JSON

Что можно запросить

JSONPath выбирает значения из документа JSON. Страница выполняет практичное подмножество и возвращает каждое совпадение как JSON. Сначала причесать документ можно в форматировании JSON.

Как пользоваться

  1. Вставьте JSON в верхнее поле и путь в JSONPath. Путь начинается с $.
  2. Преобразовать выполняет запрос. Строка рядом с путём говорит, сколько совпадений вернулось.
  3. Показать пример загружает {"store":{"book":[{"author":"Nigel","price":8},{"author":"Evelyn","price":12}],"bicycle":{"price":19}}} и путь $.store.book[*].author. Результат — массив JSON из Nigel и Evelyn, счёт равен 2.
  4. Кнопки пути подставляют тот же документ, если поле пустое. $.store.book[?(@.price<10)].author возвращает Nigel. $..price возвращает 8, 12 и 19.
  5. Очистить всё опустошает документ, возвращает путь к $ и сбрасывает счёт. Копировать результат копирует совпадения JSON.

Пути, которые принимает страница

$ — это корень. .key и ['key'] читают свойство. [n] читает один индекс, отрицательный индекс считает с конца. [*] читает каждый элемент или свойство. [start:end:step] срезает массив, конец не включается. [0,2] берёт эти индексы. ..key обходит каждый вложенный объект и собирает этот ключ.

Фильтр имеет вид [?(@.price<10)] или [?(@.author=='Nigel')]. Сравнения: ==, !=, <, >, <= и >=. Текст сравнивается точно. Порядок применяется к числам. Фильтр работает по массиву. Неизвестный путь или JSON, который не разбирается, — ошибка. Ноль совпадений — допустимый пустой массив.

Где это нужно

  • Достать одно поле из каждого объекта списка.
  • Оставить строки, у которых цена ниже числа.
  • Найти каждую цену, в том числе вложенную в разные объекты.

Вопросы

Почему результат — массив, если автор один?

Каждый запрос возвращает список совпадений, поэтому одно попадание всё равно массив из одного элемента.

Работает ли выражение скрипта?

Фильтры — это одно сравнение по @ и его полям. Другой синтаксис скрипта останавливается с ошибкой.