Penguji JSONPath
Kueri JSON dengan ekspresi JSONPath dan lihat tiap kecocokan beserta path-nya
Tentang alat ini
Uji ekspresi JSONPath terhadap JSON Anda sendiri dan lihat setiap kecocokan lengkap dengan nilainya sekaligus path konkretnya. Sintaksis yang didukung mencakup pemakaian sehari-hari: notasi titik dan kurung siku, indeks larik (termasuk negatif), wildcard, gabungan (['a','b']), dan penelusuran rekursif ($..price).
Keluaran path pada tiap kecocokan adalah bagian yang diam-diam paling berguna: jalankan $..id pada dokumen yang dalam, dan tiap hasil memberi tahu persis di mana ia tinggal ($.data.items[3].id), siap ditempel ke dalam kode. Ia mengubah “ada di suatu tempat dalam gumpalan ini” menjadi alamat yang pasti.
Ekspresi penyaring ([?(@.price < 10)]) belum diterapkan — alatnya mengatakannya terang-terangan alih-alih mengembalikan hasil yang salah. Untuk ekstraksi struktural, yang merupakan mayoritas penggunaan JSONPath, semuanya berfungsi.
Pertanyaan yang sering diajukan
- Apa bedanya $.a.b dan $..b?
- $.a.b menempuh satu rute persis: kunci a di akar, lalu kunci b di dalamnya. $..b (penelusuran rekursif) menemukan setiap b di mana pun dalam dokumen, pada kedalaman berapa pun. Penelusuran rekursif itu ampuh tetapi bisa mengejutkan — ia juga mencocokkan kunci b yang bersarang di tempat yang tak Anda pertimbangkan.
- Bagaimana mengakses kunci yang mengandung spasi atau tanda hubung?
- Dengan notasi kurung siku berkutip: $['my key'] atau $.data['content-type']. Notasi titik hanya bekerja untuk kunci yang berbentuk nama pengenal yang sah.
- Apakah indeks larik negatif berfungsi?
- Ya — [-1] adalah elemen terakhir, [-2] elemen kedua dari belakang, mengikuti konvensi yang dipopulerkan Python dan diadopsi RFC 9535. [0] tetap elemen pertama.
- Apakah JSONPath sudah dibakukan?
- Sejak 2024, ya — RFC 9535 mendefinisikan sintaksis dan semantiknya. Implementasi yang ditulis sebelum itu berbeda-beda pada kasus tepi (terutama penyaring dan gabungan), jadi ekspresi yang sama bisa berperilaku lain di pustaka berbeda; ujilah pada implementasi yang Anda pakai saat merilis.