Tester JSONPath
Otestuj výrazy JSONPath na vlastním JSON v prohlížeči. Filtry, výřezy, rekurzivní sestup, cesty a ukazatele JSON Pointer a hotové příklady.
Jak otestovat výraz JSONPath
- Vlož svůj JSON do pole Data JSON, nebo klikni na Načíst ukázková data a použij klasický příklad s knihkupectvím.
- Napiš výraz do pole Výraz JSONPath, nebo ho vyber v části Příklady.
- Výsledek se aktualizuje při psaní a tlačítko Spustit dotaz ho spustí znovu. Stavový řádek udává počet shod.
- Pomocí Zobrazit přepínáš mezi Hodnotami, Cestami, Ukazateli JSON Pointer a Cestami a hodnotami a pak výsledek zkopíruješ.
Syntaxe JSONPath ve zkratce
| Syntaxe | Význam | Příklad |
|---|---|---|
$ |
kořen dokumentu | $ |
.name nebo ['name'] |
potomek | $.store.bicycle |
* |
každý potomek | $.store.* |
.. |
rekurzivní sestup, v libovolné hloubce | $..author |
[n] |
index pole, od 0 | $..book[2] |
[start:end:step] |
výřez, záporná čísla se počítají od konce | $..book[-1:] |
[a,b] |
sjednocení | $..book[0,1] |
[?(expr)] |
filtr | $..book[?(@.price < 10)] |
^ |
rodič každé shody | $..book[?(@.price > 20)]^ |
~ |
název vlastnosti místo hodnoty | $.store.*~ |
Výsledky se vracejí v pořadí dokumentu. Cesty dávají normalizované cesty jako $['store']['book'][0]['title'] a Ukazatele JSON Pointer tvar podle RFC 6901 /store/book/0/title, užitečný pro JSON Patch nebo pro cesty chyb ve validátorech JSON Schema.
Výrazy ve filtrech: co je podporováno
Filtry se vyhodnocují knihovnou jsonpath-plus v bezpečném režimu: výraz parsuje a interpretuje malý vyhodnocovač a nikdy se nepředává do eval ani new Function. Uvnitř [?( … )] můžeš použít:
@pro aktuální položku,@.fielda@['field']pro její členy,@rootpro celý dokument ($uvnitř filtru k dispozici není);- porovnání
==,!=,===,!==,<,<=,>,>=; - logiku
&&,||,!, aritmetiku+ - * / %a ternární operátora ? b : c; - literály řetězců, čísel,
true,false,nulla regulárních výrazů; - metody samotných hodnot, například
@.title.startsWith('S'),@.tags.includes('new')nebo@.title.match(/lord/i); @property(klíč nebo index aktuální položky),@parenta@path(její normalizovaná cesta) ve stylu jsonpath-plus.
Přístup ke constructor, __proto__ a konstruktoru Function je blokován. Pokud filtr u jedné položky selže, například @.isbn.startsWith('0') u knihy bez isbn, tato položka prostě neodpovídá. Syntaktická chyba ve výrazu se ohlásí. Filtry zapsané podle RFC 9535, [?@.price < 10] bez závorek, se přijímají a čtou se jako [?(@.price < 10)]. Funkce RFC 9535 jako length(), count(), match() a search() nejsou k dispozici: použij místo nich metody JavaScriptu, například @.name.length.
Selektory typů z jsonpath-plus fungují také na konci cesty: $..*@number() vrátí každé číslo a @string(), @boolean(), @array(), @object(), @null() a @integer() dělají totéž pro ostatní typy.
Časté dotazy
Odesílá se můj JSON na server?
Ne. Zpracování i vyhodnocení probíhají ve tvém prohlížeči a tvoje data nikdy neopustí tvůj počítač.
Proč můj filtr nic nevrací?
Zkontroluj, zda cesta před filtrem vybírá pole nebo objekt: $.store.book[?(@.price < 10)] filtruje knihy, zatímco $.store[?(@.price < 10)] se dívá na book a bicycle. Vlastnost, která u položky chybí, je undefined, takže porovnání s ní jsou nepravdivá.
Jaký je rozdíl mezi `==` a `===`?
Stejně jako v JavaScriptu == převádí typy ("10" == 10 platí), zatímco === porovnává typ i hodnotu.
Proč je výstup omezený?
Do výsledku se zapisuje jen prvních 10 000 shod, aby stránka zůstala svižná. Stavový řádek udává celkový počet.
Je JSONPath standardizovaný?
Ano, od roku 2024 normou RFC 9535. Implementace se stále liší, zejména ve filtrech. Tento nástroj se řídí knihovnou jsonpath-plus, tedy syntaxí původního JSONPath Stefana Goessnera.
Související nástroje
- Formátovač a validátor JSON Bezplatný formátovač a validátor JSON, který zpřehlední, minifikuje a ověří JSON ve tvém prohlížeči a syntaktické chyby hlásí s řádkem a sloupcem.
- Validátor JSON Schema Ověř dokument JSON podle schématu JSON Schema přímo v prohlížeči. Každá chyba je uvedena s cestou v instanci, klíčovým slovem a cestou ve schématu.
- Tester regulárních výrazů Testuj regulární výrazy JavaScriptu naživo: zvýrazněné shody, zachytávací skupiny, nahrazování a srozumitelné vysvětlení každé části výrazu.