Tester JSONPath
Testează expresii JSONPath pe propriul tău JSON, în browser. Filtre, felii, parcurgere recursivă, căi și JSON Pointer, cu exemple gata făcute.
Cum testezi o expresie JSONPath
- Lipește JSON-ul în Date JSON sau apasă Încarcă date de probă pentru a folosi exemplul clasic cu librăria.
- Scrie o expresie în Expresie JSONPath sau alege una din Exemple.
- Rezultatul se actualizează pe măsură ce scrii; Rulează interogarea o rulează din nou. Linia de stare indică numărul de potriviri.
- Folosește Arată pentru a comuta între Valori, Căi, JSON Pointer și Căi și valori, apoi copiază rezultatul.
Sintaxa JSONPath pe scurt
| Sintaxă | Semnificație | Exemplu |
|---|---|---|
$ |
rădăcina documentului | $ |
.name sau ['name'] |
un copil | $.store.bicycle |
* |
fiecare copil | $.store.* |
.. |
parcurgere recursivă, la orice adâncime | $..author |
[n] |
indice de listă, începând de la 0 | $..book[2] |
[start:end:step] |
felie; numerele negative se numără de la sfârșit | $..book[-1:] |
[a,b] |
reuniune | $..book[0,1] |
[?(expr)] |
filtru | $..book[?(@.price < 10)] |
^ |
părintele fiecărei potriviri | $..book[?(@.price > 20)]^ |
~ |
numele proprietății în loc de valoare | $.store.*~ |
Rezultatele sunt returnate în ordinea din document. Căi oferă căi normalizate precum $['store']['book'][0]['title'], iar JSON Pointer oferă forma RFC 6901 /store/book/0/title, utilă pentru JSON Patch sau pentru căile de eroare ale validatoarelor JSON Schema.
Expresii de filtrare: ce este acceptat
Filtrele sunt evaluate cu jsonpath-plus în mod sigur: expresia este analizată și interpretată de un evaluator mic, niciodată dată lui eval sau new Function. În interiorul [?( … )] poți folosi:
@pentru elementul curent,@.fieldși@['field']pentru membrii lui,@rootpentru întregul document ($nu este disponibil în interiorul unui filtru);- comparațiile
==,!=,===,!==,<,<=,>,>=; - logica
&&,||,!, aritmetica+ - * / %și operatorul ternara ? b : c; - literali de tip șir, număr,
true,false,nullși expresii regulate; - metode ale valorilor înseși, de exemplu
@.title.startsWith('S'),@.tags.includes('new')sau@.title.match(/lord/i); @property(cheia sau indicele elementului curent),@parentși@path(calea lui normalizată), în stilul jsonpath-plus.
Accesul la constructor, __proto__ și la constructorul Function este blocat. Dacă un filtru eșuează pe un element, de exemplu @.isbn.startsWith('0') pe o carte fără isbn, acel element pur și simplu nu se potrivește; o eroare de sintaxă în expresie este raportată. Filtrele scrise în stilul RFC 9535, [?@.price < 10] fără paranteze, sunt acceptate și citite ca [?(@.price < 10)]. Funcțiile RFC 9535 precum length(), count(), match() și search() nu sunt disponibile: folosește în schimb metode JavaScript precum @.name.length.
Selectoarele de tip din jsonpath-plus funcționează și la sfârșitul unei căi: $..*@number() returnează fiecare număr, iar @string(), @boolean(), @array(), @object(), @null() și @integer() fac același lucru pentru celelalte tipuri.
Întrebări frecvente
Este JSON-ul meu trimis către un server?
Nu. Analiza și evaluarea au loc în browserul tău, iar datele nu părăsesc calculatorul tău.
De ce filtrul meu nu returnează nimic?
Verifică dacă calea de dinaintea filtrului selectează o listă sau un obiect: $.store.book[?(@.price < 10)] filtrează cărțile, în timp ce $.store[?(@.price < 10)] se uită la book și bicycle. O proprietate lipsă dintr-un element este undefined, deci comparațiile cu ea sunt false.
Care este diferența dintre `==` și `===`?
Ca în JavaScript, == convertește tipurile ("10" == 10 este adevărat), în timp ce === compară tipul și valoarea.
De ce rezultatul este limitat?
Doar primele 10.000 de potriviri sunt scrise în rezultat, pentru ca pagina să rămână receptivă; linia de stare indică numărul total.
Este JSONPath standardizat?
Da, din 2024, prin RFC 9535. Implementările diferă totuși, mai ales la filtre; instrumentul urmează jsonpath-plus, sintaxa JSONPath-ului original al lui Stefan Goessner.
Instrumente similare
- Formatare și validare JSON Formatator și validator JSON gratuit, care înfrumusețează, minifică și verifică JSON în browser, cu erori de sintaxă raportate pe linie și coloană.
- Validator JSON Schema Validează un document JSON în raport cu o schemă JSON Schema, în browser. Fiecare eroare este listată cu calea din document, cuvântul cheie și calea din schemă.
- Tester regex Testează expresii regulate JavaScript în timp real, cu potriviri evidențiate, grupuri de captură, înlocuire și explicația fiecărui element.