Cara memakai
- Tempel dokumen JSON ke Dokumen JSON. Gunakan contoh untuk mencoba alat ini lebih dulu.
- Ketik Kueri JSONPath di kotak di bawahnya, diawali dengan $. Filter ditulis dalam kurung siku: [[email protected] < 10].
- Baca jumlah Kecocokan, lalu tabel Kecocokan, berurutan: setiap baris memiliki jalur kecocokan dan nilainya.
- Jika pesan menunjukkan posisi masalah, lihat karakter itu di kueri dan perbaiki tanda kurung, tanda kutip atau titiknya.
Cara kueri memilih simpul
Kueri adalah daftar segmen setelah $. Segmen anak seperti .store atau [0] memilih anak dari setiap simpul yang dicapainya, dan segmen descendant seperti ..author mengunjungi simpul dan semua turunannya sebelum memilih. Simpul dari satu segmen muncul menurut urutan input, dan larik selalu dibaca menurut urutannya (RFC 9535, bagian 2.5 dan 2.5.2.2).
Pemilih nama hanya mencocokkan anggota dengan nama persis itu dan hanya di dalam objek. Indeks negatif menghitung dari akhir larik, sehingga -1 adalah elemen terakhir. Irisan seperti [1:5:2] mengambil awal, akhir dan langkah, dan langkah 0 tidak memilih apa pun (bagian 2.3.4.2).
Filter, fungsi dan yang ditolak alat
Filter [?...] menguji setiap anak dari larik atau objek. Perbandingan memakai ==, !=, <, <=, > dan >=; && , || dan ! menggabungkan uji, dan tanda kurung mengelompokkannya. Anggota yang hilang adalah Nothing, dan dua nilai Nothing sama. Angka dibandingkan dengan angka, teks dengan teks, dan nilai dengan tipe satu tidak pernah sama dengan nilai bertipe lain (bagian 2.3.5.2).
Fungsi length, count, value, match dan search didukung sebagaimana RFC 9535 mendefinisikannya. match dan search menerima ekspresi reguler yang ditulis dalam I-Regexp, format RFC 9485; pola yang bukan I-Regexp yang valid tidak cocok dengan apa pun. Literal larik dan objek bukan bagian dari tata bahasa, sehingga alat menolaknya, dan ia menolak hasil fungsi yang dipakai sendirian dalam filter, karena RFC 9535 menyatakan itu tidak bertipe benar.
Contoh toko buku
Dengan dokumen contoh dan kueri $.store.book[[email protected] < 10].title, buku yang lebih murah dari 10 adalah yang pertama dan ketiga. Judulnya adalah dua kecocokan di bawah, dengan jalur ternormalisasi masing-masing.
| Jalur ternormalisasi | Nilai (JSON) |
|---|---|
| $['store']['book'][0]['title'] | "Sayings of the Century" |
| $['store']['book'][2]['title'] | "Moby Dick" |
Pertanyaan yang sering diajukan
Mengapa kueri tidak mengembalikan apa-apa padahal kuncinya ada?
Pemilih nama hanya mencocokkan anggota objek dengan nama yang persis sama, dan perbandingannya peka huruf besar-kecil. Ia tidak pernah mencocokkan elemen larik, jadi gunakan indeks atau wildcard untuk larik.
Mengapa 13 dan "13" tidak sama dalam filter?
RFC 9535 membandingkan nilai dengan tipe berbeda sebagai tidak sama (bagian 2.3.5.3). Angka dan teks adalah nilai yang berbeda, jadi == bernilai salah dan != bernilai benar, meskipun karakternya tampak sama.
Apa yang dipilih indeks negatif?
Indeks negatif menghitung dari akhir larik: -1 adalah elemen terakhir dan -2 adalah yang sebelumnya. Indeks di luar larik tidak memilih apa pun dan bukan galat (bagian 2.3.3.2).
Mengapa alat menolak length(@) ketika ia sendirian dalam filter?
length mengembalikan angka, dan filter memerlukan uji yang benar atau salah. Bandingkan hasilnya, seperti [?length(@.title) > 15], yang bertipe benar.
Apakah alat mengirim JSON saya ke server?
Tidak. Dokumen dibaca oleh peramban Anda dengan JSON.parse, kueri juga dijalankan di sana, dan tidak ada yang disimpan. Halaman tidak membuat permintaan jaringan.
Sumber
- RFC 9535, JSONPath: Query Expressions for JSON, sections 1.5, 2.3, 2.4, 2.5 and 2.7 (dalam bahasa Inggris)
- RFC 9485, I-Regexp: An Interoperable Regular Expression Format, sections 3 and 5.3 (dalam bahasa Inggris)
Angka dan teks terakhir diperiksa pada Selasa, 10 November 2026.