JSON Path Tester

Masukkan dokumen JSON dan ketik ekspresi JSONPath seperti $..book[?(@.price<10)]. Alat pengujian akan mengevaluasi ekspresi tersebut terhadap dokumen dan menampilkan semua nilai yang cocok beserta jalur lengkapnya. Fitur ini sangat berguna untuk memvalidasi kueri yang akan Anda tempelkan ke dalam skrip atau spesifikasi API (Postman, k6, dan JMeter semuanya mendukung JSONPath).

Cara menguji ekspresi JSONPath

  1. 1

    Lampirkan dokumen JSON

    Semua format JSON yang valid, objek, array, maupun struktur yang bersarang secara mendalam.

  2. 2

    Masukkan ekspresi

    Mulailah dengan `$` untuk akar; gunakan `.` untuk anak, `..` untuk turunan rekursif, dan `[*]` untuk wildcard.

  3. 3

    Lihat kecocokan secara langsung

    Setiap kecocokan ditampilkan dengan nilai dan JSONPath lengkapnya, yang disorot dalam dokumen asli.

  4. 4

    Salin hasilnya

    Salin hasil pencocokan sebagai array JSON, atau salin setiap jalur secara terpisah untuk digunakan dalam kode selanjutnya.

Referensi sintaks JSONPath

Ekspresi Makna
$ Elemen akar
$.store Anak dari $ yang bernama store
$["store"] Sama, berbentuk braket
$..author Semua properti author pada kedalaman apa pun
$.store.book[*] Semua buku di toko
$.store.book[0] Buku pertama
$.store.book[-1:] Buku terakhir
$.store.book[0:2] Dua buku pertama (bagian)
$.store.book[?(@.isbn)] Buku dengan properti isbn
$.store.book[?(@.price < 10)] Buku dengan harga di bawah 10
$.store.book[?(@.category == "fiction")] Buku fiksi
$..* Setiap nilai, di mana pun

Ekspresi Filter

Ekspresi filter menggunakan @ untuk merujuk pada node saat ini. Alat pengujian mendukung operator umum ==, !=, <, >, <=, >=, &&, ||, serta ekspresi regular =~.

$.items[?(@.qty >= 10 && @.price < 50)]

Dialek JSONPath

Terdapat beberapa implementasi JSONPath yang memiliki sedikit ketidaksesuaian. Alat pengujian ini mengikuti spesifikasi asli Goessner serta penyempurnaan dari RFC 9535, dan kompatibel dengan:

  • JaywayJsonPath (Java)
  • jsonpath-plus (JavaScript)
  • jsonpath-rw (Python)
  • Ekspresi jalur dasar jq

Fitur-fitur yang tidak kompatibel (seperti ekspresi skrip yang menggunakan kode JS sembarang) akan ditandai di panel kesalahan.

Ketika JSONPath unggul dibandingkan parser lengkap

  • Asersi pengujian: pm.expect(jsonData).to.have.jsonPath(...) dari Postman menerima sebuah jalur (path).
  • Ekstraksi konfigurasi: mengekstrak satu nilai dari respons API yang sangat besar tanpa menggunakan pustaka khusus.
  • Skrip pengujian beban: k6, JMeter, dan Gatling semuanya mendukung JSONPath untuk pemeriksaan.
  • Kubernetes / AWS CLI: Flag --query dan --jsonpath memungkinkan Anda mengatur format keluaran dari baris perintah.

Kesalahan Umum

  • Menggunakan . pada sebuah array. $.users.0.name tidak benar; gunakan $.users[0].name.
  • Lupa menggunakan .. untuk kedalaman. Jalur seperti $.name hanya cocok dengan name pada tingkat tertinggi; gunakan $..name untuk semua kasus.
  • Menyamakan JSONPath dengan jq secara keliru. jq merupakan himpunan yang lebih luas dibandingkan JSONPath, karena mencakup mekanisme alur kontrol dan transformasi; sedangkan JSONPath khusus digunakan untuk ekstraksi data saja.
  • Penambatan (anchoring) dengan Regex. =~ /foo/ cocok dengan substring; gunakan /^foo$/ untuk pencocokan yang akurat.

Pertanyaan yang Sering Diajukan

JSONPath merupakan bahasa ekstraksi murni yang menyediakan fungsi seleksi, penyaringan, dan pemotongan data. Sementara itu, jq adalah bahasa kueri dan transformasi lengkap yang mencakup alur kontrol, variabel, serta fungsi kompleks. Untuk ekstraksi sederhana, JSONPath lebih portabel; sedangkan untuk transformasi data, gunakan jq.

Spesifikasi asli Goessner ditambah penyempurnaan berdasarkan RFC 9535, yang kompatibel dengan JaywayJsonPath (Java) dan jsonpath-plus (Node). Ekstensi khusus dialek (ekspresi skrip yang mengandung kode sembarang) tidak didukung.

Ya. $..book[?(@.title =~ /^Harry.*/)] cocok untuk semua buku yang judulnya dimulai dengan “Harry”. Gunakan ^ dan $ untuk pencocokan lengkap.

Ya. Baik JSON maupun mesin evaluasi JSONPath berada di dalam peramban Anda. Dokumen dan kueri Anda tidak pernah keluar dari tab tersebut.

Alat Terkait

Alat ini tersedia dalam bahasa lain