Apa itu JSON dan Bagaimana Cara Menggunakannya?

  • Post author:
  • Post category:Tutorial

JSON (JavaScript Object Notation) adalah format standar untuk mewakili data terstruktur. Meskipun JSON tumbuh dari bahasa pemrograman JavaScript, sekarang JSON menjadi metode pertukaran data antar sistem yang ada di mana-mana. Sebagian besar API modern menerima permintaan JSON dan mengeluarkan respons JSON sehingga berguna untuk memiliki pengetahuan yang baik tentang format dan fitur-fiturnya.

Dalam artikel ini, kami akan menjelaskan apa itu JSON, bagaimana JSON mengekspresikan tipe data yang berbeda, dan caranya Anda dapat memproduksi dan mengkonsumsinya dalam bahasa pemrograman populer. Kami juga akan membahas beberapa batasan JSON dan alternatif yang muncul.

Dasar-Dasar JSON

JSON awalnya dirancang oleh Douglas Crockford sebagai format stateless untuk mengkomunikasikan data antara browser dan server. Kembali di awal 2000-an, situs web mulai mengambil data tambahan secara asinkron dari server mereka, setelah pemuatan halaman awal. Sebagai format berbasis teks yang diturunkan dari JavaScript, JSON mempermudah pengambilan dan penggunaan data dalam aplikasi ini. Spesifikasi tersebut akhirnya distandarisasi sebagai ECMA-404 pada 2013.

JSON selalu ditransmisikan sebagai string. String ini dapat didekodekan menjadi berbagai tipe data dasar, termasuk angka, boolean, array, dan objek. Ini berarti hierarki dan hubungan objek dapat dipertahankan selama transmisi, kemudian dipasang kembali di sisi penerima dengan cara yang sesuai untuk lingkungan pemrograman.

A Contoh JSON Dasar

Ini adalah representasi JSON dari entri blog:

{ “id”: 1001, ” title”: “Apa itu JSON?”, “penulis”: { “id”: 1, “name”: “James Walker” }, “tags”: [“api”, “json”, “programming”], ” diterbitkan”: false, “publishedTimestamp”: null }

Contoh ini menunjukkan semua tipe data JSON. Ini juga menggambarkan penyingkatan data berformat JSON, salah satu karakteristik yang membuatnya sangat menarik untuk digunakan dalam API. Selain itu, JSON relatif mudah dibaca apa adanya, tidak seperti format verbose lainnya seperti XML.

JSON Data Types

Enam jenis data dapat direpresentasikan secara native dalam JSON:

Strings – String ditulis di antara tanda kutip ganda; karakter dapat diloloskan menggunakan garis miring terbalik. Angka – Angka ditulis sebagai angka tanpa tanda kutip. Anda dapat memasukkan komponen pecahan untuk menunjukkan float. Sebagian besar implementasi parsing JSON mengasumsikan bilangan bulat ketika tidak ada titik desimal yang ada. Booleans – Nilai literal true dan false didukung. Null – Nilai literal null dapat digunakan untuk menandakan nilai kosong atau dihilangkan. Array – Array adalah daftar sederhana dilambangkan dengan tanda kurung siku. Setiap elemen dalam daftar dipisahkan dengan koma. Array dapat berisi sejumlah item dan mereka dapat menggunakan semua tipe data yang didukung. Objek – Objek dibuat dengan tanda kurung kurawal. Mereka adalah kumpulan pasangan nilai kunci di mana kuncinya adalah string, dibungkus dengan tanda kutip ganda. Setiap kunci memiliki nilai yang dapat mengambil salah satu tipe data yang tersedia. Anda dapat membuat sarang objek untuk membuat hierarki berjenjang. Sebuah koma harus mengikuti setiap nilai, yang menandakan akhir dari parser pasangan nilai kunci tersebut.

JSON secara otomatis mengubah tipe data ini menjadi struktur yang sesuai dengan bahasanya. Anda tidak perlu memasukkan id secara manual ke bilangan bulat, misalnya. Parsing seluruh string JSON sudah cukup untuk memetakan nilai kembali ke format data aslinya.

Semantics dan Validation

JSON memiliki aturan tertentu yang perlu dipatuhi saat Anda menyandikan data. String yang tidak mematuhi sintaks tidak akan dapat diuraikan oleh konsumen.

Sangat penting untuk memperhatikan tanda kutip di sekitar string dan kunci objek. Anda juga harus memastikan tanda koma digunakan setelah setiap entri dalam objek atau larik. JSON tidak mengizinkan tanda koma setelah entri terakhir meskipun – secara tidak sengaja memasukkannya adalah penyebab umum kesalahan validasi. Sebagian besar editor teks akan menyoroti masalah sintaks untuk Anda, membantu mengungkap kesalahan.

Meskipun titik perjalanan umum ini, JSON adalah salah satu format data termudah untuk ditulis dengan tangan. Kebanyakan orang menemukan sintaks cepat dan nyaman setelah mereka terbiasa dengannya. Secara keseluruhan JSON cenderung kurang rawan kesalahan daripada XML, di mana tag pembuka dan penutup yang tidak cocok, deklarasi skema yang tidak valid, dan masalah pengkodean karakter sering menyebabkan masalah.

Menunjuk Konten JSON

Ekstensi .json biasanya digunakan saat JSON disimpan ke file. Konten JSON memiliki aplikasi/json tipe MIME standar, meskipun teks/jsonis terkadang digunakan untuk alasan kompatibilitas. Saat ini Anda harus mengandalkan application/json untuk Accept dan Content-Type HTTP headers.

Kebanyakan API yang menggunakan JSON akan merangkum semuanya dalam objek tingkat atas:

{ “error”: 1000 }

Ini tidak diperlukan – tipe literal valid sebagai node tingkat atas dalam sebuah file, jadi contoh berikut adalah semua JSON yang valid juga:

1000truenull

Mereka akan mendekode ke skalar masing-masing dalam bahasa pemrograman Anda.

Bekerja Dengan JSON

Sebagian besar bahasa pemrograman memiliki dukungan JSON bawaan. Berikut ini cara berinteraksi dengan data JSON di beberapa lingkungan populer.

JavaScript

Dalam JavaScript, metode JSON.stringify() dan JSON.parse() digunakan untuk mengkodekan dan mendekode string JSON:

const post ={ id:1001, title:”What Is JSON?”, penulis:{ id:1, nama:”James Walker”}}; const encodedJson = JSON.stringify(post); // {“id”: 1001, “title”: “Apa itu JSON?”, …} console.log(encodedJson); const decodeJson = JSON.parse(encodedJson); // James Walker console.log(decodedJson.author.name);PHP

Fungsi yang setara dalam PHP adalah json_encode() dan json_decode():

$post=[“id”=>1001,”title”=>”Apa itu JSON ?”,”penulis”=>[“id”=>1,”nama”=>”James Walker”]]; $encodedJson=json_encode($post); // {“id”: 1001, “title”: “Apa itu JSON?”, …}echo$encodedJson; $decodedJson=json_decode($encodedJson,true); // James Walkerecho$decodedJson[“author”][“name”];Python

Python menyediakan json.dumps() dan json.loads() untuk membuat serial dan deserialize masing-masing:

import json   post ={“id”: 1001,”title” : “Apa itu JSON?”,”author”: {“id”: 1,”name”: “James Walker”}}   encodedJson = json.dumps(post)   # {“id”: 1001, “title”: ” Apa itu JSON?”, …}print(encodedJson)   decodedJson = json.loads(encodedJson)   # James Walkerprint(decodedJson[“author”][“name”])Ruby

Ruby menawarkan JSON.generate dan JSON.parse:

require” json”   post = {“id”=>1001, “title”=>”Apa itu JSON?”, “author”=>{“id”=>1, “name”=>”James Walker”}}   encodedJson = JSON.generate(post)   # {“id”: 1001, “title”: “Apa itu JSON?”, …}puts encodedJson   decodedJson = JSON.parse(encodedJson)   # James Walkerputs decodedJson[“author”][” name”]JSON Limitations

JSON adalah format ringan yang berfokus pada penyampaian nilai dalam struktur data Anda. Ini membuatnya cepat untuk diurai dan mudah dikerjakan tetapi berarti ada kekurangan yang dapat menyebabkan frustrasi. Berikut adalah beberapa masalah terbesar.

No Comments

JSON data tidak dapat menyertakan komentar. Kurangnya anotasi mengurangi kejelasan dan memaksa Anda untuk meletakkan dokumentasi di tempat lain. Ini dapat membuat JSON tidak cocok untuk situasi seperti file konfigurasi, di mana modifikasi jarang terjadi dan tujuan bidang mungkin tidak jelas.

No Schemas

JSON tidak mengizinkan Anda menentukan skema untuk data Anda. Tidak ada cara untuk menegakkan bahwa id adalah bidang bilangan bulat yang diperlukan, misalnya. Hal ini dapat menyebabkan struktur data yang tidak sengaja rusak.

No References

Fields tidak dapat mereferensikan nilai lain dalam struktur data. Ini sering menyebabkan pengulangan yang meningkatkan ukuran file. Kembali ke contoh posting blog sebelumnya, Anda dapat memiliki daftar posting blog sebagai berikut:

{ “posts”: [ { “id”: 1001, “title”: “What is JSON?”, “author”: { “id”: 1, “name”: “James Walker” } }, { “id”: 1002, “title”: “Apa itu SaaS?”, “author”: { “id”: 1, “name”: “James Walker” } } ] }

Kedua posting memiliki penulis yang sama tetapi informasi yang terkait dengan objek tersebut harus diduplikasi. Dalam dunia yang ideal, implementasi parser JSON akan dapat menghasilkan struktur yang ditunjukkan di atas dari input yang mirip dengan yang berikut:

{ “posts”: [ { “id”: 1001, “title”: “Apa itu JSON?”, ” author”: “{{ .authors.james }}” }, { “id”: 1002, “title”: “Apa itu SaaS?”, “author”: “{{ .authors.james }}” } ], “authors”: { “james”: { “id”: 1, “name”: “James Walker” } } }

Saat ini tidak dimungkinkan dengan JSON standar.

Tidak Ada Tipe Data Lanjutan

Keenam tipe data yang didukung menghilangkan banyak jenis nilai yang umum . JSON tidak dapat menyimpan tanggal, waktu, atau titik geolokasi secara native, jadi Anda perlu memutuskan format Anda sendiri untuk informasi ini.

Hal ini menyebabkan perbedaan yang tidak nyaman dan kasus tepi. Jika aplikasi Anda menangani stempel waktu sebagai string, seperti 2022-07-01T12:00:00+00:00, tetapi API eksternal menyajikan waktu sebagai detik setelah zaman Unix – 1657287000 – Anda harus mengingat kapan harus menggunakan masing-masing format.

JSON Alternatif

YAML adalah alternatif JSON terkemuka. Ini adalah superset dari format yang memiliki presentasi yang lebih dapat dibaca manusia, tipe data khusus, dan dukungan untuk referensi. Ini dimaksudkan untuk mengatasi sebagian besar tantangan kegunaan yang terkait dengan JSON.

YAML telah melihat adopsi yang luas untuk file konfigurasi dan dalam DevOps, IaC, dan alat observabilitas. Ini lebih jarang digunakan sebagai format pertukaran data untuk API. Kompleksitas relatif YAML berarti kurang mudah didekati oleh pendatang baru. Kesalahan sintaks kecil dapat menyebabkan kegagalan penguraian yang membingungkan.

Protocol buffers (protobufs) adalah pesaing JSON baru yang dirancang untuk membuat serial data terstruktur. Protobuf memiliki deklarasi tipe data, bidang wajib, dan dukungan untuk sebagian besar bahasa pemrograman utama. Sistem ini semakin populer sebagai cara yang lebih efisien untuk mentransmisikan data melalui jaringan.

Summary

JSON adalah format representasi data berbasis teks yang dapat mengkodekan enam tipe data yang berbeda. JSON telah menjadi inti dari ekosistem pengembangan perangkat lunak; ini didukung oleh semua bahasa pemrograman utama dan telah menjadi pilihan default untuk sebagian besar REST API yang dikembangkan selama beberapa dekade terakhir.

Meskipun kesederhanaan JSON adalah bagian dari popularitasnya, JSON juga memberlakukan batasan pada apa yang dapat Anda capai dengan format tersebut. Kurangnya dukungan untuk skema, komentar, referensi objek, dan tipe data khusus berarti beberapa aplikasi akan menemukan bahwa mereka melampaui apa yang mungkin dilakukan dengan JSON. Alternatif yang lebih muda seperti YAML dan Protobuf telah membantu mengatasi tantangan ini, sementara XML tetap menjadi pesaing untuk aplikasi yang ingin mendefinisikan skema data dan tidak mempermasalahkan verbositas.

Itulah berita seputar Apa itu JSON dan Bagaimana Cara Menggunakannya?, semoga bermanfaat. Disadur dari HowToGeek.com.