Pengekstrak Jalur JSON

Tempel JSON dan masukkan ekspresi path seperti $.store.book[0].title untuk mengekstrak nilai.

Hasil

Masukkan JSON dan path, lalu klik Ekstrak.

Cara kerjanya

  1. Tempel JSON Anda: masukkan objek atau array JSON di kolom input.
  2. Masukkan ekspresi JSONPath: ketik path seperti $.store.book[*].author atau $.users[?(@.age > 18)] untuk memilih data yang Anda inginkan.
  3. Lihat hasil yang diekstrak: nilai yang cocok muncul seketika di panel keluaran. Salin hasilnya atau ekspor.

Mengapa menggunakan ekstraktor JSONPath?

Saat bekerja dengan respons API yang kompleks atau JSON yang bersarang dalam, mengekstrak nilai tertentu secara manual lambat dan rentan kesalahan. JSONPath adalah bahasa kueri untuk JSON, mirip dengan XPath untuk XML. Memungkinkan Anda menargetkan persis data yang Anda butuhkan menggunakan ekspresi path yang ringkas, baik itu nilai bersarang tunggal, semua elemen array, atau catatan yang difilter sesuai kondisi. Alat ini membuat eksplorasi JSONPath interaktif tanpa menulis kode.

Fitur

Pertanyaan umum

Apa itu JSONPath?

JSONPath adalah bahasa kueri untuk dokumen JSON, analog dengan XPath untuk XML. Path seperti $.users[*].name memilih kolom name dari setiap objek dalam array users. Banyak digunakan untuk pengujian API, transformasi data, dan pemrosesan JSON.

Bagaimana cara memfilter elemen array berdasarkan kondisi?

Gunakan ekspresi filter: $.items[?(@.price < 50)] mengembalikan semua item yang harganya kurang dari 50. Simbol @ merujuk pada elemen yang sedang dievaluasi.

Apakah mendukung pencarian rekursif?

Ya. Operator .. melakukan pencarian rekursif di semua tingkat. Misalnya, $..name menemukan semua kunci name di mana saja dalam struktur JSON, terlepas dari kedalaman bersarang.

Dari posting blog ke RFC 9535: jalan 17 tahun menuju standar JSONPath

Stefan Gössner mengusulkan JSONPath dalam satu posting blog pada Februari 2007, mengadaptasi ide XPath ke JSON. Ia menerbitkan implementasi referensi JavaScript, menyketsa sintaksis (akar $, operator anak titik dan kurung, .. untuk turunan rekursif, * untuk wildcard, [mulai:akhir:langkah] untuk slicing array, [?(...)] untuk ekspresi filter) dan ekosistem yang lebih luas mengikuti. Implementasi berkembang biak: jsonpath untuk JavaScript, JsonPath untuk Java, jq (Stephen Dolan, 2012) yang berdekatan dengan JSONPath tapi merupakan hal sendiri, jsonpath-ng untuk Python, JMESPath (AWS, 2014) sebagai saingan yang lebih ketat. Masalahnya: setiap implementasi melayang. Sintaksis filter, semantik rekursi, pencocokan regex, pengidentifikasi akar, semuanya berbeda secara halus di antara pustaka. Sebuah studi perbandingan 2023 oleh Carsten Bormann et al. menguji 41 implementasi JSONPath yang berbeda terhadap input yang sama dan mendapat 41 set hasil yang berbeda untuk ekspresi yang sama. Kelompok Kerja JSONPath IETF berkumpul pada 2020 untuk memperbaiki ini. RFC 9535 «JSONPath: Query Expressions for JSON» diterbitkan pada Februari 2024, menjadi standar formal pertama untuk JSONPath, 17 tahun setelah posting asli Gössner. RFC 9535 mengkodifikasi sintaksis, mendefinisikan format output yang dinormalkan, memerlukan normalisasi Unicode untuk perbandingan string, dan menambahkan suite uji kesesuaian.

Lembar contekan sintaksis JSONPath

Tujuh operator yang mencakup sebagian besar query dunia nyata:

Di mana Anda sebenarnya meraih JSONPath

Kesalahan yang menggigit

JSONPath vs jq vs JMESPath vs JSON Pointer

Pertanyaan yang lebih sering diajukan

Apakah JSONPath sama dengan XPath?

Terinspirasi olehnya, tidak identik. XPath difinalkan oleh W3C pada 1999 untuk XML, JSONPath disketsa oleh Gössner pada 2007 untuk membawa ide yang sama ke JSON. Perbedaan terbesar: JSONPath menggunakan . dan [] alih-alih /, JSONPath tidak memiliki konsep ruang nama atau atribut XML, JSONPath distandardisasi jauh kemudian (2024 vs 1999), jadi selama bertahun-tahun itu adalah sintaksis de facto dengan banyak implementasi yang tidak kompatibel.

Mengapa JSONPath yang sama memberi hasil yang berbeda di alat yang berbeda?

Karena JSONPath tidak distandardisasi sampai RFC 9535 (Februari 2024). Sebelum itu, setiap implementasi membuat pilihannya sendiri tentang sintaksis filter, dukungan regex, pengidentifikasi akar, aturan escape, dan kasus tepi (array kosong, kunci yang hilang, paksaan tipe dalam filter). Studi kelompok kerja IETF 2023 menguji 41 implementasi pada input yang sama dan mendapatkan 41 set hasil yang berbeda. RFC 9535 memperbaiki ini untuk pustaka baru dan yang diperbarui; pustaka lama akan menyimpang sampai mereka bermigrasi. Selalu periksa apakah pustaka Anda mengklaim «kesesuaian RFC 9535».

Bisakah saya memodifikasi JSON dengan JSONPath, atau hanya membaca?

RFC 9535 mendefinisikan JSONPath dengan ketat sebagai bahasa query: ia mengembalikan nilai dari dokumen, ia tidak bermutasi. Untuk memodifikasi JSON, gunakan JSON Patch (RFC 6902), yang menggunakan jalur JSON Pointer dan operasi add/remove/replace/copy/move/test. Beberapa pustaka menggabungkan keduanya (mis. jsonpath-plus di JavaScript memiliki ekstensi mutasi apply()) tapi itu bukan JSONPath standar.

Apakah JSONPath mendukung ekspresi reguler dalam filter?

RFC 9535 menambahkan dua fungsi regex: match(node, regex) mencocokkan seluruh string, search(node, regex) mencocokkan substring apa pun. Contoh: $.book[?(match(@.isbn, "^978-"))]. Rasa regex adalah I-Regexp (RFC 9485, profil regex XML Schema), bukan PCRE atau regex JavaScript. Pustaka lama menggunakan rasa regex bahasa host mereka, yang membuat query regex sangat tidak portabel.

Apakah JSON saya dikirim ke mana pun saat saya menggunakan alat ini?

Tidak. Evaluasi jalur berjalan sepenuhnya di mesin JavaScript browser Anda. Buka tab Jaringan di DevTools dan jalankan query, Anda akan melihat nol permintaan keluar selama evaluasi. Aman untuk respons API dengan rahasia, dump database dengan PII, atau file konfigurasi yang berisi kredensial.

Alat terkait

JSON Tree Penampil Pemformat & Validator JSON Gratis Online JSON ke CSV Konverter JSON Bandingkan