- JSON Path adalah bahasa kueri yang dapat digunakan untuk mengekstrak data dari dokumen JSON
- Karena OpenAPI adalah dokumen JSON atau YAML, JSON Path dapat digunakan untuk melakukan berbagai pekerjaan di OpenAPI
- Menambal dokumen dengan konten tambahan, contoh kode, dan lain-lain menggunakan OpenAPI Overlay
- Dapat digunakan di Spectral untuk menulis aturan tingkat lanjut
- Juga dapat digunakan di AWS Step Functions
- Cara kerja JSON Path
- Menjelajahi dan memfilter struktur data JSON lalu mengekstrak bagian tertentu
- Sintaksnya mirip dengan XPath (digunakan di XML)
- Contoh sintaks:
$.store.book[?@.price < 10].title
- Pemanfaatan di OpenAPI
- Dapat mengueri dokumen OpenAPI dan mengekstrak bagian tertentu menggunakan perintah
jpp
- Digunakan untuk memodifikasi dokumen OpenAPI atau menambahkan informasi dengan memakai Overlay
- Memperbarui deskripsi, menambahkan informasi kontak, dan sebagainya
- Menghapus server pengembangan/staging dari daftar server dan hanya menyisakan produksi
- Menambahkan informasi server sandbox baru, dan sebagainya
- Mempelajari JSON Path lebih lanjut
- Ditetapkan sebagai standar oleh IETF pada 2024 (RFC 9535)
- Sebelumnya ada berbagai varian, tetapi kini cenderung disatukan melalui standardisasi
- Sebaiknya mengikuti sintaks RFC 9535
Pendapat GN⁺
- JSON Path digunakan di semakin banyak tempat, jadi ini adalah keterampilan yang berguna untuk diketahui. Khususnya bagi pengembang atau penulis teknis yang menangani OpenAPI, ini tampaknya akan menjadi keterampilan yang penting.
- Karena sintaks JSON Path masih belum sepenuhnya seragam, ada sedikit kebingungan, tetapi tampaknya paling baik menjadikan RFC 9535 sebagai acuan. Ke depannya, berbagai alat terkait juga diharapkan mengikuti standar ini.
- Bidang pemanfaatannya dalam proses pengembangan, seperti OpenAPI Overlay atau Spectral, tampak cukup beragam. Bukan hanya untuk ekstraksi data sederhana, tetapi juga sangat berpotensi digunakan untuk penyempurnaan dokumentasi, validasi, dan pembersihan.
- Namun, karena sintaksnya agak kompleks dan perlu terbiasa dengan JSON/YAML, ada hambatan awal untuk mulai menggunakannya. Sebaiknya mulai dengan cara yang sederhana lalu secara bertahap mempelajari fitur yang lebih lanjut.
- Akan bagus untuk berlatih dengan memanfaatkan alat baris perintah seperti jq atau yq. Menggunakan alat terpadu seperti Bump.sh juga akan membantu produktivitas.
2 komentar
Terima kasih
Opini Hacker News
JSONata(https://jsonata.org) adalah salah satu alat terbaik untuk memanipulasi JSON, menggunakan sintaks JsonPath dan selain pemilihan node juga menyediakan fungsi pembantu untuk aritmetika, perbandingan, pengurutan, pengelompokan, manipulasi tanggal, dan agregasi. Ditulis dalam JS sehingga dapat digunakan di Node maupun browser, dan juga memiliki pembungkus Python (https://pypi.org/project/pyjsonata/).
json_profile(https://github.com/tylerneylon/json_profile) adalah alat yang membantu memahami dengan cepat skema utama dan lokasi data dalam file JSON baru, dan berguna ketika elemen sejajar dalam sebuah daftar memiliki struktur yang sama. Alat ini mempelajari struktur file, menampilkan jalur agregasi yang paling berat, dan memberikan petunjuk ukuran per jalur.
espath(https://github.com/tomhodgins/espath) adalah pustaka yang menggunakan XPath dan selektor CSS untuk memfilter dan menemukan data dalam JSON. Cara kerjanya dengan mengubah objek JavaScript menjadi XML DOM, menjalankan kueri, lalu mengubahnya kembali menjadi objek, atau dengan mempertahankan register objek asli dan menelusuri objek asli.
Ada pertanyaan apakah ada nama umum untuk struktur data yang direpresentasikan JSON, serta penyebutan perlunya bahasa jalur yang bekerja pada struktur serupa seperti JSON, YAML, kamus Python, TOML, dan lainnya.
SQLite menyertakan subset JSON Path di database inti yang digunakan dalam fungsi seperti json_extract(). Catatan detail terkait: https://til.simonwillison.net/sqlite/json-extract-path
Insomnia dan Bruno memiliki fitur untuk memfilter respons menggunakan JSON Path.
Pernah digunakan untuk membuat aturan pemfilteran khusus pengguna terhadap baris DB dengan memanfaatkan dukungan jsonpath di PostgreSQL.
Diperkirakan serangan injeksi jalur JSON akan tak terhindarkan, seperti halnya injeksi XPATH yang dulu banyak digunakan. (Lihat https://owasp.org/www-community/attacks/XPATH_Injection)
Aneh rasanya tidak ada penyebutan alat serupa seperti jq.
Disayangkan ada terlalu banyak sintaks jalur JSON. jq, JSON path, AWS CLI, MySQL, dan lainnya masing-masing memakai sintaks berbeda, sehingga sulit membangun muscle memory.