JSONPath Tester
Uji ekspresi JSONPath pada JSON Anda sendiri di browser. Filter, slice, recursive descent, path, dan JSON Pointer, dengan contoh-contoh siap pakai.
Cara menguji ekspresi JSONPath
- Tempel JSON Anda di Data JSON, atau klik Muat data contoh untuk memakai contoh toko buku klasik.
- Ketik ekspresi di Ekspresi JSONPath, atau pilih salah satu dari Contoh.
- Hasilnya diperbarui saat Anda mengetik; Jalankan kueri menjalankannya lagi. Baris status menampilkan jumlah kecocokan.
- Gunakan Tampilkan untuk beralih antara Nilai, Path, JSON Pointer, dan Path dan nilai, lalu salin hasilnya.
Ringkasan sintaks JSONPath
| Sintaks | Arti | Contoh |
|---|---|---|
$ |
root dokumen | $ |
.name atau ['name'] |
anak (child) | $.store.bicycle |
* |
setiap anak | $.store.* |
.. |
recursive descent, di kedalaman mana pun | $..author |
[n] |
indeks array, mulai dari 0 | $..book[2] |
[start:end:step] |
slice; angka negatif dihitung dari akhir | $..book[-1:] |
[a,b] |
union | $..book[0,1] |
[?(expr)] |
filter | $..book[?(@.price < 10)] |
^ |
induk dari setiap kecocokan | $..book[?(@.price > 20)]^ |
~ |
nama properti, bukan nilainya | $.store.*~ |
Hasil dikembalikan sesuai urutan di dokumen. Path memberikan path yang dinormalisasi seperti $['store']['book'][0]['title'], dan JSON Pointer memberikan bentuk RFC 6901 /store/book/0/title, praktis untuk JSON Patch atau untuk path kesalahan dari validator JSON Schema.
Ekspresi filter: apa saja yang didukung
Filter dievaluasi dengan jsonpath-plus dalam safe mode: ekspresi di-parse dan diinterpretasikan oleh evaluator kecil, tidak pernah diteruskan ke eval atau new Function. Di dalam [?( … )] Anda bisa memakai:
@untuk item saat ini,@.fielddan@['field']untuk anggotanya,@rootuntuk seluruh dokumen ($tidak tersedia di dalam filter);- perbandingan
==,!=,===,!==,<,<=,>,>=; - logika
&&,||,!, aritmetika+ - * / %, dan ternarya ? b : c; - literal string, angka,
true,false,null, dan regular expression; - method dari nilai itu sendiri, misalnya
@.title.startsWith('S'),@.tags.includes('new'), atau@.title.match(/lord/i); @property(key atau indeks item saat ini),@parent, dan@path(path yang dinormalisasi), dalam gaya jsonpath-plus.
Akses ke constructor, __proto__, dan konstruktor Function diblokir. Jika filter gagal pada satu item, misalnya @.isbn.startsWith('0') pada buku tanpa isbn, item itu cukup dianggap tidak cocok; kesalahan sintaksis pada ekspresi dilaporkan. Filter yang ditulis dengan gaya RFC 9535, [?@.price < 10] tanpa tanda kurung, diterima dan dibaca sebagai [?(@.price < 10)]. Fungsi RFC 9535 seperti length(), count(), match(), dan search() tidak tersedia: gunakan method JavaScript seperti @.name.length sebagai gantinya.
Type selector dari jsonpath-plus juga berfungsi di akhir path: $..*@number() mengembalikan setiap angka, dan @string(), @boolean(), @array(), @object(), @null(), serta @integer() melakukan hal yang sama untuk tipe lain.
Pertanyaan yang sering diajukan
Apakah JSON saya dikirim ke server?
Tidak. Parsing dan evaluasi berlangsung di browser Anda, dan data Anda tidak pernah meninggalkan komputer Anda.
Mengapa filter saya tidak mengembalikan apa pun?
Pastikan path sebelum filter memilih array atau objek: $.store.book[?(@.price < 10)] memfilter buku-buku, sedangkan $.store[?(@.price < 10)] memeriksa book dan bicycle. Properti yang tidak ada di suatu item bernilai undefined, sehingga perbandingan dengannya bernilai false.
Apa bedanya `==` dan `===`?
Seperti di JavaScript, == mengonversi tipe ("10" == 10 bernilai true), sedangkan === membandingkan tipe dan nilai.
Mengapa hasilnya dibatasi?
Hanya 10.000 kecocokan pertama yang ditulis ke hasil, agar halaman tetap responsif; baris status menampilkan jumlah lengkapnya.
Apakah JSONPath sudah distandardisasi?
Ya, sejak 2024, melalui RFC 9535. Implementasinya masih berbeda-beda, terutama pada filter; alat ini mengikuti jsonpath-plus, sintaks JSONPath asli karya Stefan Goessner.
Alat terkait
- JSON Formatter dan Validator JSON formatter dan validator gratis untuk merapikan, minify, dan memeriksa JSON di browser Anda, dengan kesalahan sintaksis yang dilaporkan per baris dan kolom.
- JSON Schema Validator Validasi dokumen JSON terhadap JSON Schema di browser Anda. Setiap kesalahan ditampilkan lengkap dengan path instance, keyword, dan path schema-nya.
- Regex Tester Tes regular expression JavaScript secara langsung dengan kecocokan yang disorot, grup tangkapan, penggantian teks, dan penjelasan setiap token.