Aman mengubah string JSON ke object
Diberikan sebuah string JSON data, bagaimana anda dapat dengan aman mengubah string menjadi objek JavaScript?
Jelas anda dapat melakukan hal ini tidak aman dengan sesuatu seperti...
var obj = eval("(" + json + ')');
...tapi yang membuat kita rentan terhadap json string yang berisi kode-kode lain, yang tampaknya sangat berbahaya untuk hanya eval.
1293
24
JSON.mengurai(jsonString)
adalah murni JavaScript pendekatan asalkan anda dapat menjamin cukup browser modern.JQuery metode ini sekarang sudah ditinggalkan. Menggunakan metode ini sebagai gantinya:
Jawaban asli menggunakan usang fungsi jQuery:
Jika anda're menggunakan jQuery hanya menggunakan:
It's apa yang anda'kembali mencari (lihat jQuery dokumentasi).
Edit: Ini jawaban untuk IE < 7, untuk browser modern check Jonathan's jawaban di atas.
Edit: Ini jawaban yang sudah usang dan Jonathan's jawaban atas (
JSON.mengurai(jsonString)
) sekarang jawaban terbaik.JSON.org telah JSON parser untuk banyak bahasa, termasuk 4 orang yang berbeda untuk Javascript. Saya percaya kebanyakan orang akan mempertimbangkan json2.js mereka goto implementasi.
Menggunakan kode sederhana yang diwakili berikut ini link di MSDN.
dan sebaliknya
I'm tidak yakin tentang cara-cara lain untuk melakukan itu, tapi di sini's bagaimana anda melakukannya di Prototipe (JSON tutorial).
Menelepon evalJSON() dengan benar sebagai argumen sanitizes masuk string.
Hal ini tampaknya menjadi masalah:
Masukan diterima, melalui ajax websocket dll, dan itu selalu akan berada dalam format String - tapi anda perlu tahu jika itu adalah JSON.dapat diuraikan. Touble adalah, bahwa jika anda selalu berjalan melalui JSON.mengurai, program ini DAPAT terus 'berhasil' tapi anda'll masih melihat pesan kesalahan yang dilemparkan di konsol dengan ditakuti "Kesalahan: unexpected token 'x',".
Jika anda're menggunakan jQuery, anda bisa juga hanya melakukan
$.getJSON(url, function(data) { });
Kemudian anda dapat melakukan hal-hal seperti
data.key1.sesuatu
,data.key1.something_else
, dll.Callback dilewatkan kembali data, yang akan menjadi JavaScript object atau array seperti yang didefinisikan oleh struktur JSON dan parsing menggunakan
$.parseJSON()
metode.Hanya untuk bersenang-senang, berikut adalah cara menggunakan fungsi :
Cobalah menggunakan metode ini objek Data. ex:
Data='{hasil:benar,count:1}
'Metode ini benar-benar membantu dalam Nodejs ketika anda bekerja dengan serial port programming
Cara termudah menggunakan
mengurai()
metode:kemudian anda bisa mendapatkan nilai-nilai dari
Json
elemen, misalnya:Menggunakan jQuery seperti yang dijelaskan dalam dokumentasi:
Menggunakan JSON.mengurai mungkin adalah cara terbaik. Berikut ini's contoh live demo
Saya menemukan "baik" dengan cara:
Di CoffeeScript:
Dalam Javascript:
json.mengurai akan berubah menjadi objek.
JSON parsing selalu sakit di pantat. Jika input tidak sesuai dengan yang diharapkan itu melempar kesalahan dan crash apa yang anda lakukan. Anda dapat menggunakan berikut kecil fungsi untuk aman mengurai masukan anda. Itu selalu berubah objek bahkan jika input tidak valid atau sudah objek yang lebih baik untuk sebagian besar kasus.
Mengkonversi objek ke JSON, dan kemudian parsing itu, bekerja untuk saya, seperti:
Jika kita memiliki sebuah string seperti ini: "{\"status\":1,\"token\":\"65b4352b2dfc4957a09add0ce5714059\"}" maka kita hanya dapat menggunakan JSON.mengurai dua kali untuk mengkonversi string ini untuk objek JSON:
Dan hanya kita dapat mengekstrak nilai dari objek JSON menggunakan:
Hasilnya akan menjadi:
JSON.parse() mengkonversi setiap String JSON dilewatkan ke dalam fungsi, untuk Objek JSON.
Untuk pemahaman yang lebih Baik tekan F12 untuk membuka Memeriksa Elemen dari browser anda dan masuk ke konsol untuk menulis perintah berikut : -
Sekarang jalankan perintah berikut :-
anda'akan mendapatkan output sebagai Objek {hasil: benar, count: 1}.
Dalam rangka untuk menggunakan Benda itu, anda dapat menetapkan variabel let's mengatakan obj :-
Sekarang dengan menggunakan obj dan dot(.) operator anda dapat mengakses properti dari Objek JSON.
Cobalah untuk menjalankan perintah
Secara resmi didokumentasikan:
The
JSON.parse()
metode parsing JSON string, membangun JavaScript nilai atau objek yang dijelaskan oleh string. Opsionalminuman keras
fungsi dapat diberikan untuk melakukan transformasi pada objek yang dihasilkan sebelum dikembalikan.Sintaks
Parameter
teks
String untuk mengurai sebagai JSON. Melihat objek JSON untuk keterangan JSON sintaks.
minuman keras (opsional)
Jika fungsi ini mengatur berapa nilai awalnya diproduksi oleh parsing berubah, sebelum dikembalikan.
Nilai kembali
Objek yang sesuai untuk diberikan JSON teks.
Pengecualian
Melempar SyntaxError terkecuali jika string untuk mengurai ini tidak berlaku JSON.
Tua pertanyaan, saya tahu, namun tidak ada pemberitahuan larutan ini dengan menggunakan
Fungsi baru()
, fungsi anonim yang menghasilkan data.Hanya sebuah contoh:
Ini adalah sedikit lebih aman karena mengeksekusi dalam fungsi dan tidak mengkompilasi kode anda secara langsung. Jadi jika ada deklarasi fungsi di dalamnya, itu tidak akan terikat pada jendela default objek.
Saya menggunakan ini untuk 'menyusun' pengaturan konfigurasi dari elemen DOM (misalnya data atribut) yang sederhana dan cepat.