Materi
JSON adalah format teks untuk bertukar data antara program: berkas konfigurasi, isi localStorage, dan respons server. JSON.stringify(nilai) mengubah objek atau array menjadi teks JSON, dan JSON.parse(teks) mengubahnya kembali. Argumen ketiga stringify menentukan indentasi, sehingga JSON.stringify(data, null, 2) menghasilkan teks yang mudah dibaca manusia.
Tidak semua nilai JavaScript punya bentuk JSON. Di dalam objek, property bernilai undefined atau fungsi dibuang; di dalam array, keduanya menjadi null. Date ditulis sebagai teks ISO lewat method toJSON miliknya, sehingga setelah di-parse ia kembali sebagai teks, bukan Date. Map dan Set menjadi {}.
const data = { nama: "Joko", lahir: new Date(Date.UTC(1999, 4, 17)), catatan: undefined };
const teks = JSON.stringify(data);
// '{"nama":"Joko","lahir":"1999-05-17T00:00:00.000Z"}'
const balik = JSON.parse(teks);
typeof balik.lahir; // "string"
JSON.parse("{'nama':'Joko'}"); // SyntaxError: kutip tunggal bukan JSONAturan JSON lebih ketat daripada objek JavaScript: nama property wajib berkutip ganda, teks wajib berkutip ganda, dan koma sesudah isi terakhir dilarang. Teks yang melanggar aturan itu membuat JSON.parse melempar SyntaxError. Teks dari luar program, seperti isian pengguna atau berkas unggahan, tidak bisa dijamin sah, sehingga pemanggilan parse-nya dibungkus try dan catch.