Rumah  >  Artikel  >  hujung hadapan web  >  Penjelasan terperinci tentang penukaran JavaScript dan menghuraikan kemahiran examples_javascript kaedah JSON

Penjelasan terperinci tentang penukaran JavaScript dan menghuraikan kemahiran examples_javascript kaedah JSON

WBOY
WBOYasal
2016-05-16 15:30:101374semak imbas

Contoh dalam artikel ini menerangkan penukaran JavaScript dan menghuraikan kaedah JSON. Kongsikan dengan semua orang untuk rujukan anda, butirannya adalah seperti berikut:

Data format json adalah seperti berikut:

var json = { 'jquery': [{ "id": "1", "type": "ASP.NET", "title": "JSON全解析"}] }
    alert(json.jquery[0].id);
    alert(json.jquery[0].type);
    alert(json.jquery[0].title);

Javascript menghuraikan data json:

window.onload = function() {
 var json = { "China": "[{'City':'上海','value':'1'},{'City':'南京','value':'2'},{'City':'杭州','value':'3'},{'City':'武汉','value':'4'}]" }
 var datas = eval(json.China);
 for (var i = 0; i < datas.length; i++) 
 {
  alert(datas[i].City);
  alert(datas[i].value);
 }
}

Tambahan: kaedah json parsing jQuery:

Gunakan fungsi eval untuk menghuraikan dan jquery setiap kaedah untuk melintasi

Gunakan JQuery untuk menghuraikan data JSON Sebagai objek penghantaran permintaan asynchronous, hasil yang dikembalikan selepas permintaan JQuery ialah objek json Apa yang dipertimbangkan di sini ialah bentuk rentetan yang dikembalikan oleh pelayan dalam bentuk JSON pemalam seperti JSONObject Objek JSON adalah serupa dengan ini dan tidak akan dijelaskan di sini.

Set rentetan JSON pertama kali diberikan di sini Set rentetan adalah seperti berikut:

var data=" 
{ 
root: 
[ 
  {name:'1',value:'0'}, 
  {name:'6101',value:'北京市'}, 
  {name:'6102',value:'天津市'}, 
  {name:'6103',value:'上海市'}, 
  {name:'6104',value:'重庆市'}, 
]
}"; 

Berdasarkan jenis data yang diperoleh secara tak segerak oleh JQuery - objek dan rentetan json, di sini kami memperkenalkan kaedah pemprosesan hasil yang diperolehi oleh kedua-dua kaedah tersebut.

eval()

Untuk rentetan JSON yang dikembalikan oleh pelayan, jika permintaan asynchronous jquery tidak menyatakan jenis, atau menerimanya dalam mod rentetan, maka ia perlu diobjektifkan, atau ia adalah untuk meletakkan rentetan dalam eval() Dilaksanakan sekali. Kaedah ini juga sesuai untuk mendapatkan objek json menggunakan javascipt biasa Berikut adalah contoh:

// 转换为json对象
var dataObj=eval("("+data+")");

Mengapa kita perlu menambah ("(" data ")");

Sebabnya ialah: masalah eval itu sendiri. Memandangkan json bermula dan berakhir dengan "{}", ia akan diproses sebagai blok pernyataan dalam JS, jadi ia mesti dipaksa untuk ditukar menjadi ungkapan.

Tujuan menambah kurungan adalah untuk memaksa fungsi eval menukar ungkapan dalam kurungan kepada objek dan bukannya melaksanakannya sebagai pernyataan semasa memproses kod JavaScript. Sebagai contoh, ambil objek secara literal {}. Jika tiada kurungan luar ditambahkan, maka eval akan mengenali pendakap sebagai tanda permulaan dan penamat bagi blok kod JavaScript dan {} akan dianggap untuk melaksanakan pernyataan kosong. Jadi dua keputusan pelaksanaan berikut adalah berbeza:

// return undefined
alert(eval("{}"); 
// return object[Object]
alert(eval("({})");

Tulisan seperti ini boleh dilihat di mana-mana di JS. Contohnya: (function()) {}();

//输出root的子对象数量 
alert(dataObj.root.length);
$.each(dataObj.root,fucntion(idx,item){ 
  if(idx==0){ 
    return true; 
  } 
  //输出每个root子对象的名称和值 
  alert("name:"+item.name+",value:"+item.value); 
}) 

Untuk js umum menjana objek json, anda hanya perlu menggantikan kaedah $.each() dengan pernyataan for dan yang lain kekal tidak berubah.

Rentetan JSON dikembalikan oleh pelayan

Untuk rentetan JSON yang dikembalikan oleh pelayan, jika permintaan asynchronous jquery menetapkan jenis (biasanya atribut konfigurasi ini) kepada "json", atau menggunakan kaedah $.getJSON() untuk mendapatkan pulangan pelayan, maka eval( ) kaedah tidak diperlukan Kerana hasil yang diperoleh pada masa ini sudah menjadi objek json, anda hanya perlu memanggil objek secara langsung Di sini, kaedah $.getJSON digunakan sebagai contoh untuk menggambarkan kaedah pemprosesan data:

.
$.getJSON("http://www.xxxx.com/",{param:"gaoyusi"},function(data){ 
  //此处返回的data已经是json对象 
  //以下其他操作同第一种情况 
  $.each(data.root,function(idx,item){ 
    if(idx==0){ 
      //同countinue,返回false同break 
      return true;
    } 
    alert("name:"+item.name+",value:"+item.value); 
  }); 
}); 

Apa yang memerlukan perhatian khusus di sini ialah kaedah eval() dalam kaedah 1 melaksanakan rentetan secara dinamik (mungkin skrip js), yang boleh menyebabkan isu keselamatan sistem dengan mudah. Oleh itu, anda boleh menggunakan beberapa perpustakaan skrip klien pihak ketiga yang memintas eval(). Contohnya, JSON dalam JavaScript menyediakan perpustakaan skrip tidak lebih daripada 3k.

Kaedah penghuraian kedua ialah menggunakan objek Fungsi Aplikasi tipikalnya ialah penghuraian data yang dikembalikan seperti kejayaan di bawah kaedah AJAX dalam JQuery.

var json='{"name":"CJ","age":18}';
data =(new Function("","return "+json))();

Data pada masa ini ialah objek json yang akan dihuraikan.

Saya harap artikel ini akan membantu semua orang dalam pengaturcaraan JavaScript.

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