mahirjsondataapiMahir3 mnt baca

JSON: parse dan stringify

Format pertukaran data universal: mengubah object jadi string JSON dan sebaliknya.

Bahasa perantara data

JSON (JavaScript Object Notation) adalah format teks untuk pertukaran data. API hampir selalu mengirim dan menerima JSON. Bentuknya mirip object JavaScript, tapi lebih ketat aturannya.

json
{
  "nama": "Rizky",
  "umur": 17,
  "lulus": true,
  "hobi": ["ngoding", "gaming"]
}

Perhatikan: key selalu pakai tanda kutip ganda, tidak boleh ada koma di akhir, dan tidak ada komentar atau function.

stringify: object jadi string

Saat mengirim data ke server atau menyimpan ke localStorage, ubah object jadi string JSON:

javascript
let user = { nama: "Rizky", umur: 17 };
let json = JSON.stringify(user);
console.log(json); // '{"nama":"Rizky","umur":17}'
console.log(typeof json); // "string"

Bisa juga dibuat cantik untuk dibaca manusia dengan indentasi:

javascript
console.log(JSON.stringify(user, null, 2));
// {
//   "nama": "Rizky",
//   "umur": 17
// }

parse: string jadi object

Saat menerima data dari server, ubah string JSON kembali jadi object yang bisa dipakai:

javascript
let data = '{"nama":"Rizky","umur":17}';
let user = JSON.parse(data);
console.log(user.nama); // "Rizky"

Menangani JSON rusak

JSON.parse melempar error kalau stringnya tidak valid. Selalu bungkus dengan try-catch untuk data dari luar:

javascript
try {
  let hasil = JSON.parse(inputPengguna);
  console.log("Valid:", hasil);
} catch (e) {
  console.log("JSON tidak valid!");
}

Catatan teknis: JSON.stringify menghilangkan function, undefined, dan Symbol karena JSON tidak mendukungnya. Date diubah jadi string ISO. Untuk object dengan referensi melingkar (a merujuk b, b merujuk a), stringify akan error. Pahami batas ini saat menyimpan state kompleks.

Studi kasus: simpan dan muat pengaturan

JSON menjembatani object JavaScript dan localStorage yang hanya menerima string:

javascript
let pengaturan = { tema: "gelap", bahasa: "id", notif: true };

// simpan
localStorage.setItem("pengaturan", JSON.stringify(pengaturan));

// muat (dengan fallback aman)
let mentah = localStorage.getItem("pengaturan");
let dimuat = mentah ? JSON.parse(mentah) : { tema: "terang" };
console.log(dimuat.tema);

// update satu field tanpa menghilangkan yang lain
dimuat.bahasa = "en";
localStorage.setItem("pengaturan", JSON.stringify(dimuat));

Pola muat-ubah-simpan ini standar untuk state client-side. Fallback { tema: "terang" } menangani kasus pertama kali dibuka (belum ada data tersimpan) agar kode tidak error.

Kesimpulan

Dua fungsi, dua arah: stringify untuk mengirim/menyimpan, parse untuk menerima/membaca. JSON adalah jembatan antara JavaScript dan dunia luar: API, database, file konfigurasi.