Diberikan string data JSON, bagaimana saya bisa dengan aman mengubah string itu menjadi objek JavaScript?
Jelas saya bisa melakukan ini dengan tidak aman dengan sesuatu seperti:
var obj = eval("(" + json + ')');
tapi itu membuat saya rentan terhadap string JSON yang berisi kode lain, yang tampaknya sangat berbahaya hanya untuk eval.
javascript
json
Matt Sheppard
sumber
sumber
eval
untuk mem-parsing string JSON karena Anda akan mengekspos kode Anda ke "injeksi kode". GunakanJSON.parse(yourString)
sebagai gantinya.Jawaban:
JSON.parse(jsonString)
adalah pendekatan JavaScript murni selama Anda dapat menjamin browser yang cukup modern.sumber
Requires document to be in IE8+ standards mode to work in IE8.
Metode jQuery sekarang sudah tidak digunakan lagi. Gunakan metode ini sebagai gantinya:
Jawaban asli menggunakan fungsi jQuery yang sudah usang :
Jika Anda menggunakan jQuery cukup gunakan:
Persis seperti yang Anda cari (lihat dokumentasi jQuery ).
sumber
jQuery.parseJSON
default untuk menggunakanJSON.parse
jika ada, jadi satu-satunya alasan untuk menggunakan ini di atas yang asli adalah jika Anda membutuhkan cadangan untuk <IE7. Itu diubah kembali pada jQuery 1.6: james.padolsey.com/jquery/#v=1.6.0&fn=jQuery.parseJSONJawaban ini untuk IE <7, untuk browser modern periksa jawaban Jonathan di atas.
Jawaban ini sudah usang dan jawaban Jonathan di atas (
JSON.parse(jsonString)
) sekarang adalah jawaban terbaik .JSON.org memiliki parser JSON untuk banyak bahasa termasuk empat yang berbeda untuk JavaScript. Saya percaya kebanyakan orang akan mempertimbangkan implementasi goto json2.js mereka.
sumber
Gunakan contoh kode sederhana di " JSON.parse () ":
dan membalikkannya:
sumber
Saya tidak yakin tentang cara lain untuk melakukannya tetapi inilah cara Anda melakukannya di Prototipe (tutorial JSON) .
Memanggil
evalJSON()
dengan true sebagai argumen membersihkan string yang masuk.sumber
Ini tampaknya menjadi masalah:
Input yang diterima melalui websocket Ajax dll, dan itu akan dalam format String, tetapi Anda perlu tahu apakah itu
JSON.parsable
. Masalahnya adalah, jika Anda selalu menjalankannyaJSON.parse
, program MUNGKIN melanjutkan "berhasil" tetapi Anda masih akan melihat kesalahan dilemparkan di konsol dengan yang ditakuti"Error: unexpected token 'x'"
.sumber
(function(){ postCookiesToHostileServer(); }());
atau bahkan hal-hal yang lebih buruk dalam konteks Node.Jika Anda menggunakan jQuery , Anda juga dapat menggunakan:
Maka Anda dapat melakukan hal-hal seperti
dll.
sumber
Callback meneruskan data yang dikembalikan, yang akan menjadi objek JavaScript atau array seperti yang didefinisikan oleh struktur JSON dan diuraikan menggunakan
$.parseJSON()
metode ini.sumber
Hanya untuk bersenang-senang, berikut ini cara menggunakan suatu fungsi:
sumber
eval
untuk melakukannya dan tidak aman. : Peval
tetapi lebih rumit dan sulit untuk dipahami oleh pengelola.Menggunakan
JSON.parse
mungkin merupakan cara terbaik.Berikut ini contoh demo langsung .
sumber
Cara termudah menggunakan
parse()
metode:Kemudian Anda bisa mendapatkan nilai elemen JSON, misalnya:
Menggunakan jQuery seperti yang dijelaskan dalam
jQuery.parseJSON()
dokumentasi:sumber
Coba gunakan metode dengan objek Data ini. mis .:
Data='{result:true,count:1}
'Metode ini sangat membantu dalam Nodejs ketika Anda bekerja dengan pemrograman port serial
sumber
eval
atauFunction
sama-sama rentanundefined; function bye() {...} bye();
Saya menemukan cara "lebih baik":
Dalam CoffeeScript:
Dalam Javascript:
sumber
Penguraian JSON selalu menyebalkan. Jika inputnya tidak seperti yang diharapkan, ia melempar kesalahan dan membuat crash apa yang Anda lakukan.
Anda dapat menggunakan fungsi kecil berikut untuk mengurai input Anda dengan aman. Itu selalu mengubah objek bahkan jika inputnya tidak valid atau sudah menjadi objek yang lebih baik untuk kebanyakan kasus:
sumber
Object.prototype.toString.call(input) === '[object Object]'
harustypeof input === 'object'
IMOnull
case sebelumnya, dan array adalah Object. Jika Anda ingin mengujinya, Anda bisa menggunakannyainstanceof
. Selain itu, jika Anda memberikan fungsi iniArray
, ia akan menangkap danreturn def
ketika bisa mengembalikan array yang sangat baiktoString()
metode untuk memeriksa apakah suatu variabel adalah objek atau tidak. Lihat AngularJS , jQuery , Underscore , atau bahkan devsjson.parse akan berubah menjadi objek.
sumber
Jika kita memiliki string seperti ini:
maka kita cukup menggunakan
JSON.parse
dua kali untuk mengonversi string ini menjadi objek JSON:Dan kita dapat mengekstraksi nilai dari objek JSON menggunakan:
Hasilnya adalah:
sumber
JSON.parse()
mengubah string JSON apa saja yang diteruskan ke fungsi menjadi objek JSON.Untuk memahaminya dengan lebih baik, tekan F12untuk membuka "Periksa Elemen" di browser Anda dan pergi ke konsol untuk menulis perintah berikut:
Sekarang jalankan perintah:
Anda akan mendapatkan output sebagai Obyek
{result: true, count: 1}
.Untuk menggunakan Obyek itu, Anda dapat menetapkannya ke variabel, mungkin
obj
:Dengan menggunakan
obj
dan.
operator dot ( ) Anda dapat mengakses properti dari objek JSON.Coba jalankan perintah:
sumber
Dokumentasi resmi :
The
JSON.parse()
Metode mem-parsing string JSON, membangun nilai JavaScript atau objek yang dijelaskan oleh string.reviver
Fungsi opsional dapat disediakan untuk melakukan transformasi pada objek yang dihasilkan sebelum dikembalikan.Sintaksis:
Parameter:
text
: String yang diurai sebagai JSON. Lihat objek JSON untuk deskripsi sintaks JSON.reviver (optional)
: Jika suatu fungsi, ini menentukan bagaimana nilai yang awalnya dihasilkan oleh parsing ditransformasikan, sebelum dikembalikan.Nilai pengembalian
Objek yang sesuai dengan teks JSON yang diberikan.
Pengecualian
Melempar pengecualian SyntaxError jika string untuk mem-parse tidak valid JSON.
sumber
Mengubah objek ke JSON, dan kemudian menguraikannya, bekerja untuk saya, seperti:
sumber
Pisahkan string JSON dengan
JSON.parse()
, dan data menjadi objek JavaScript:Di sini, JSON mewakili untuk memproses dataset JSON.
Bayangkan kami menerima teks ini dari server web:
Untuk menguraikan objek JSON:
Berikut
obj
adalah objek JSON masing-masing yang terlihat seperti:Untuk mengambil nilai, gunakan
.
operator:Konversi objek JavaScript menjadi string dengan
JSON.stringify()
.sumber
Hanya untuk pengurai sampul untuk berbagai jenis input
Mengurai data dengan JSON.parse (), dan data menjadi objek JavaScript.
Saat menggunakan JSON.parse () pada JSON yang berasal dari array, metode akan mengembalikan array JavaScript, bukan objek JavaScript.
Objek tanggal tidak diizinkan di JSON. Untuk Dates lakukan hal seperti ini
Fungsi tidak diizinkan di JSON. Jika Anda perlu memasukkan fungsi, tulis sebagai string.
sumber
Pertanyaan yang lebih lama, saya tahu, namun tidak ada yang memperhatikan solusi ini dengan menggunakan
new Function()
, fungsi anonim yang mengembalikan data.Contoh saja:
Ini sedikit lebih aman karena dijalankan di dalam suatu fungsi dan tidak dikompilasi dalam kode Anda secara langsung. Jadi jika ada deklarasi fungsi di dalamnya, itu tidak akan terikat ke objek jendela default.
Saya menggunakan ini untuk 'mengkompilasi' pengaturan konfigurasi elemen DOM (misalnya atribut data) sederhana dan cepat.
sumber
Ringkasan:
Javascript (baik browser dan NodeJS) memiliki objek bawaan
JSON
. Pada Obyek ini ada 2 metode yang mudah untuk berurusan denganJSON
. Mereka adalah sebagai berikut:JSON.parse()
DibawaJSON
sebagai argumen, mengembalikan objek JSJSON.stringify()
Mengambil objek JS sebagai argumen mengembalikanJSON
objekAplikasi lain:
Selain itu untuk sangat nyaman berhadapan dengan
JSON
mereka dapat digunakan untuk cara lain. Kombinasi keduaJSON
metode ini memungkinkan kita untuk membuat klon array atau objek yang sangat mudah. Sebagai contoh:sumber
Anda juga dapat menggunakan
reviver
fungsi untuk memfilter.Untuk informasi lebih lanjut, baca
JSON.parse
.sumber
JSON.parse adalah cara yang tepat untuk mengubah string menjadi objek tetapi jika string yang diuraikan bukan objek atau jika string tidak benar maka akan menimbulkan kesalahan yang akan menyebabkan sisa kode rusak sehingga ideal untuk membungkus fungsi JSON.parse di dalam try-catch like
sumber
Coba ini. Yang ini ditulis dalam naskah.
sumber
JSON.parse()
?sumber