JSONPath тестер
Тествайте JSONPath изрази върху вашия JSON във вашия браузър. Филтри, срезове, рекурсивно търсене, пътища и JSON Pointer, с готови примери.
Как да тествате JSONPath израз
- Поставете JSON в JSON данни или щракнете Зареди примерни данни, за да използвате класическия пример с книжарница.
- Въведете израз в JSONPath израз или изберете един от Примери.
- Резултатът се обновява, докато пишете; Изпълни заявката я изпълнява отново. Редът със състоянието показва броя на съвпаденията.
- Използвайте Покажи, за да превключвате между Стойности, Пътища, JSON Pointer и Пътища и стойности, после копирайте резултата.
Текстовете на примерите са на български, но самите примерни данни (заглавия, автори) са на английски.
Синтаксисът на JSONPath накратко
| Синтаксис | Значение | Пример |
|---|---|---|
$ |
коренът на документа | $ |
.name или ['name'] |
дъщерен елемент | $.store.bicycle |
* |
всеки дъщерен елемент | $.store.* |
.. |
рекурсивно търсене на всяка дълбочина | $..author |
[n] |
индекс на масив, от 0 | $..book[2] |
[start:end:step] |
срез; отрицателните числа броят от края | $..book[-1:] |
[a,b] |
обединение | $..book[0,1] |
[?(expr)] |
филтър | $..book[?(@.price < 10)] |
^ |
родителят на всяко съвпадение | $..book[?(@.price > 20)]^ |
~ |
името на свойството вместо стойността | $.store.*~ |
Резултатите се връщат в реда на документа. Пътища дава нормализирани пътища като $['store']['book'][0]['title'], а JSON Pointer дава формата по RFC 6901 /store/book/0/title, удобен за JSON Patch или за пътищата на грешките във валидаторите на JSON Schema.
Филтриращи изрази: какво се поддържа
Филтрите се изчисляват с jsonpath-plus в безопасен режим: изразът се анализира и интерпретира от малък изчислител и никога не се подава на eval или new Function. Вътре в [?( … )] можете да използвате:
@за текущия елемент,@.fieldи@['field']за членовете му,@rootза целия документ ($не е достъпно вътре във филтър);- сравнения
==,!=,===,!==,<,<=,>,>=; - логика
&&,||,!, аритметика+ - * / %и тернарния операторa ? b : c; - литерали на низове, числа,
true,false,nullи регулярни изрази; - методи на самите стойности, например
@.title.startsWith('S'),@.tags.includes('new')или@.title.match(/lord/i); @property(ключът или индексът на текущия елемент),@parentи@path(нормализираният му път), в стила на jsonpath-plus.
Достъпът до constructor, __proto__ и конструктора Function е блокиран. Ако филтър се провали при един елемент, например @.isbn.startsWith('0') върху книга без isbn, този елемент просто не съвпада; синтактична грешка в израза се съобщава. Филтри, написани по RFC 9535, [?@.price < 10] без скоби, се приемат и се четат като [?(@.price < 10)]. Функциите по RFC 9535 като length(), count(), match() и search() не са налични: използвайте методи на JavaScript като @.name.length.
Селекторите за тип от jsonpath-plus също работят в края на път: $..*@number() връща всяко число, а @string(), @boolean(), @array(), @object(), @null() и @integer() правят същото за другите типове.
Често задавани въпроси
Изпраща ли се JSON към сървър?
Не. Анализът и изчисляването стават във вашия браузър, а данните ви никога не напускат компютъра ви.
Защо филтърът ми не връща нищо?
Проверете дали пътят преди филтъра избира масив или обект: $.store.book[?(@.price < 10)] филтрира книгите, а $.store[?(@.price < 10)] гледа book и bicycle. Свойство, което липсва в елемент, е undefined, така че сравненията с него са неверни.
Каква е разликата между `==` и `===`?
Както в JavaScript, == преобразува типовете ("10" == 10 е вярно), а === сравнява тип и стойност.
Защо изходът е ограничен?
Само първите 10 000 съвпадения се записват в резултата, за да остане страницата отзивчива; редът със състоянието дава пълния брой.
Стандартизиран ли е JSONPath?
Да, от 2024 г., с RFC 9535. Реализациите все още се различават, особено във филтрите; този инструмент следва jsonpath-plus – синтаксиса на оригиналния JSONPath на Стефан Гьоснер.
Сродни инструменти
- JSON форматиране и валидиране Безплатно форматиране и валидиране на JSON, което подрежда, минимизира и проверява JSON във вашия браузър, със синтактични грешки по ред и колона.
- JSON Schema валидатор Валидирайте JSON документ спрямо JSON Schema във вашия браузър. Всяка грешка е изброена с пътя си в документа, ключовата дума и пътя в схемата.
- Тестер на регулярни изрази Тествайте JavaScript регулярни изрази на живо с откроени съвпадения, улавящи групи, замяна и обяснение на всеки елемент на шаблона на разбираем език.