Method JSON.parse()
memparse string ke JSON, biasanya mengubah nilai yang dihasilkan oleh parsing.
Sintaks
JSON.parse(text[, reviver])
Parameters
text
- String yang akan di parse ke JSON. Lihat objek
JSON
untuk deskripsi lengkap sintaks JSON. reviver
Optional- Jika sebuah fungsi, mendeskripsikan bagaimana nilai asli dihasilkan oleh parsing berubah, sebelum dikembalikan.
Pemulangan
Mengembalikan Object
sesuai dengan teks JSON yang diberikan.
Lontaran
Melontarkan pengecualian SyntaxError
jika string yang di parse tidak sesuai JSON.
Contoh
Menggunakan JSON.parse()
JSON.parse('{}'); // {} JSON.parse('true'); // true JSON.parse('"foo"'); // "foo" JSON.parse('[1, 5, "false"]'); // [1, 5, "false"] JSON.parse('null'); // null
Menggunakan parameter reviver
Jika reviver
telah ditentukan, nilai dihitung dengan parsing transformed sebelum dikembalikan. Khususnya, nilai yang terhitung, dan semua propertinya (dimulai dari properti yang paling bersarang dan berlanjut ke nilai asli), secara individu dijalankan melalui reviver
, yang di panggil dengan objek yang berada di dalam properti yang akan diproses sebagai this
dan dengan nama properti sebagai string dan nilai properti sebagai argumen. jika fungsi reviver
mengembalikan undefined
(tidak mengembalikan nilai, contoh, jika eksekusi gagal di akhir fungsi), properti akan dihapus dari objek. Jika tidak, properti akan didefinisikan ulang sebagai sebuah nilai kembali.
reviver
dipanggil dengan string kosong dan nilai paling atas mengizinkan tranformsi dari nilai paling atas. Jadi untuk menangani kasus ini dengan baik, biasanya dengan mengembalikan nilai yang diberikan, atau JSON.parse()
akan mengembalikan undefined
.
JSON.parse('{"p": 5}', function(k, v) { if (k === '') { return v; } // if topmost value, return it, return v * 2; // else return v * 2. }); // { p: 10 } JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', function(k, v) { console.log(k); // log the current property name, the last is "". return v; // return the unchanged property value. }); // 1 // 2 // 4 // 6 // 5 // 3 // ""
JSON.parse()
tidak mengizinkan trailing koma
// both will throw a SyntaxError
JSON.parse('[1, 2, 3, 4, ]');
JSON.parse('{"foo" : 1, }');
Spesifikasi
Spesifikasi | Status | Comment |
---|---|---|
ECMAScript 5.1 (ECMA-262) The definition of 'JSON.parse' in that specification. |
Standard | Initial definition. Implemented in JavaScript 1.7. |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'JSON.parse' in that specification. |
Standard | |
ECMAScript 2017 Draft (ECMA-262) The definition of 'JSON.parse' in that specification. |
Draft |
Kompabilitas browser
Fitur | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Dukungan dasar | (Yes) | 3.5 (1.9.1) | 8.0 | 10.5 | 4.0 |
Fitur | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Dukungan dasar | (Yes) | (Yes) | 1.0 (1.0) | (Yes) | (Yes) | (Yes) |
Gecko-specific notes
Pada Gecko 29 (Firefox 29 / Thunderbird 29 / SeaMonkey 2.26), string JSON yang gagal akan menampilkan pesan kesalahan yang lebih rinci tentang error dalam memparse. Hal ini sangat berguna ketika mendebug data JSON yang besar.
JSON.parse('[1, 2, 3, 4,]'); // SyntaxError: JSON.parse: unexpected character at // line 1 column 13 of the JSON data