Rumah  >  Artikel  >  hujung hadapan web  >  2 cara untuk menukar rentetan kepada json dalam kemahiran JavaScript_javascript

2 cara untuk menukar rentetan kepada json dalam kemahiran JavaScript_javascript

WBOY
WBOYasal
2016-05-16 15:53:031189semak imbas

Cara pertama:

Gunakan fungsi js eval();

testJson=eval(testJson); ialah kaedah penukaran yang salah.

Kaedah penukaran yang betul memerlukan penambahan (): testJson = eval("(" testJson ")");

eval() sangat pantas, tetapi ia boleh menyusun dan melaksanakan sebarang program javaScript, jadi akan ada isu keselamatan. Menggunakan eval(). Sumber mesti boleh dipercayai. Perlu menggunakan parser json yang lebih selamat. Jika pelayan tidak mengekod json dengan ketat atau jika input tidak disahkan dengan ketat, adalah mungkin untuk menyediakan json yang tidak sah atau mengandungi skrip berbahaya, laksanakan skrip dalam eval(), dan keluarkan kod berniat jahat.

kod js:

Salin kod Kod adalah seperti berikut:

fungsi ConvertToJsonForJs() {
//var testJson = "{ nama: 'Xiaoqiang', umur: 16 }"; (Disokong)
//var testJson = "{ 'nama': 'Xiaoqiang', 'umur': 16 }"; (Disokong)
              var testJson = '{ "nama": "Xiaoqiang", "umur": 16 }';
​​​​​​ //testJson=eval(testJson);//Kaedah penukaran yang salah
             testJson = eval("(" testJson ")");
alert(testJson.name);
}

Kaedah kedua menggunakan kaedah jquery.parseJSON(), yang mempunyai keperluan yang lebih tinggi pada format json dan mesti mematuhi format json

jquery.parseJSON()

js:kod

Salin kod Kod adalah seperti berikut:

fungsi ConvertToJsonForJq() {
              var testJson = '{ "nama": "Xiaoqiang", "umur": 16 }';
                    // Tidak tahu
​​​​​​ //'{ nama: "Xiaoqiang", umur: 16 }' (nama tidak dibungkus dengan petikan berganda)
//"{ 'nama': "Xiaoqiang", 'umur': 16 }" (nama menggunakan petikan tunggal)
              testJson = $.parseJSON(testJson);
alert(testJson.name);
}

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn