JavaScript JSON
Apabila membuat permintaan Ajax ke pelayan, anda boleh mendapatkan semula data daripada respons pelayan dalam dua cara berbeza: satu menggunakan XMLHttpRequest objek Atribut responseXML mengakses data dalam format XML satu ialah atribut responseText objek XMLHttpRequest yang mengakses data dalam format rentetan. Pada masa ini, XML ialah bahasa standard untuk pemindahan data, tetapi salah satu kelemahan menggunakan XML ialah sukar untuk menghuraikannya dan mengekstrak data untuk ditambahkan ke halaman.
JSON (JavaScript Object Notation) ialah format pertukaran data yang ringan, yang kami panggil Notasi Objek JavaScript. Salah satu kelebihan menggunakan JSON untuk pemindahan data ialah JSON sebenarnya JavaScript. Ia ialah format teks berdasarkan subset sintaks literal objek JavaScript ECMAScript versi 3. Ini bermakna anda boleh menggunakan responseText untuk mendapatkan semula data JSON daripada pelayan, dan kemudian menggunakan kaedah eval() JavaScript untuk menukar rentetan JSON kepada objek JavaScript Kemudian, menggunakan JavaScript tambahan, anda boleh mengekstrak data dengan mudah daripada objek tanpa memproses DOM.
Selain itu, terdapat perpustakaan JSON untuk kebanyakan bahasa pengaturcaraan (termasuk C++, C#, ColdFusion, Java, Perl, PHP dan Python).
Walaupun terdapat banyak publisiti tentang bagaimana XML mempunyai kelebihan platform dan merentas bahasa, namun, melainkan ia digunakan pada Perkhidmatan Web, dalam aplikasi Web biasa, pembangunan sering menunjukkan otaknya untuk penghuraian XML, sama ada ia ialah pelayan Sama ada pelanggan menjana atau memproses XML, atau pelanggan menggunakan JavaScript untuk menghuraikan XML, selalunya membawa kepada kod yang kompleks dan kecekapan pembangunan yang sangat rendah. Malah, untuk kebanyakan aplikasi Web, tidak perlu XML yang kompleks untuk menghantar data Kebolehlanjutan XML jarang mempunyai kelebihan, malah banyak aplikasi Ajax mengembalikan serpihan HTML untuk membina halaman Web yang dinamik. Berbanding dengan mengembalikan XML dan menghuraikannya, mengembalikan serpihan HTML sangat mengurangkan kerumitan sistem, tetapi ia juga tidak mempunyai tahap fleksibiliti tertentu. XML menggunakan elemen, atribut, entiti dan struktur lain. JSON bukan format dokumen, jadi ia tidak memerlukan struktur tambahan ini. Oleh kerana data JSON hanya termasuk pasangan nilai nama (objek) atau nilai (tatasusunan), data JSON mengambil lebih sedikit ruang dan melaksanakan lebih pantas daripada data XML yang setara.
(1) Sintaks JSON
JSON dibina daripada dua struktur:
Objek - koleksi pasangan nama/nilai. Dalam bahasa yang berbeza, ia difahami sebagai objek, rekod, struktur, kamus, jadual cincang, senarai berkunci atau tatasusunan bersekutu. Objek bermula dengan "{" (kurungan kiri) dan berakhir dengan "}" (kurungan kanan). Setiap "nama" diikuti dengan ":" (titik bertitik); pasangan "nama/nilai" dipisahkan dengan "," (koma).
Tatasusunan - senarai nilai tersusun. Dalam kebanyakan bahasa, ia difahami sebagai tatasusunan. Tatasusunan bermula dengan "[" (kurungan kiri) dan berakhir dengan "]" (kurungan kanan). Nilai dipisahkan dengan "," (koma).
JSON tidak mempunyai pembolehubah atau struktur kawalan lain. JSON hanya digunakan untuk pemindahan data.
Sintaks JSON adalah berdasarkan sintaks JavaScript bagi literal muka dan literal tatasusunan. Apabila menggunakan literal, data itu sendiri disertakan, tetapi ungkapan yang menjana data tidak disertakan.
1. Jenis data
Struktur data JSON termasuk jenis data berikut: aksara, nombor, nilai Boolean (benar/salah), nol, objek dan tatasusunan.
Rentetan JSON mesti disertakan dalam petikan berganda. Mereka menggunakan urutan pelarian JavaScript standard. Oleh itu, tambahkan garis miring ke belakang di hadapan aksara berikut:
JSON mempunyai bentuk berikut: "(tanda petikan), b (ruang), n (baris baharu), f (suapan borang), r (carriage return) , t (kedudukan mendatar), u (tambah 4 digit pada aksara Unicode), (simbol sengkang ke belakang), / (simbol sengkang ke hadapan) 2. Objek literal
.JSON menggunakan literal untuk mewakili objek Jika terdapat lebih daripada satu objek ahli, ia boleh diwakili dalam JSON sebagai objek yang mengandungi tatasusunan dua objek. Kod berikut memaparkan objek ahli dalam bentuk teks JOSN:
{“memeber”:[ { “name”:”Tom”, “age”:22, “country”:”USA” }, { “name”:”WangMing”, “age”:25, “country”:”China” } ] }
3. Gunakan penghurai JSON
Anda boleh menggunakan penghurai JSON untuk mencipta teks JSON daripada objek dan tatasusunan atau untuk mencipta objek dan tatasusunan daripada teks JSON. Tapak web JSON www.json.rog/json.js menyediakan penghurai JSON, yang boleh digunakan dengan menambahkan kod berikut pada kepala halaman. Penghurai JSON menyediakan dua fungsi: toJSONString() dan parseJSON().
Kaedah toJSONString() ditambahkan pada definisi Objek JavaScript dan Tatasusunan Kaedah ini boleh menukar objek atau tatasusunan JavaScript kepada teks JSON. Anda tidak perlu menukar objek atau tatasusunan kepada literal untuk menggunakan kaedah ini.
Kaedah parseJSON() boleh mencipta objek atau tatasusunan daripada teks JSON.
(2) Gunakan objek XMLHttpRequest untuk mencipta permintaan data JSON
1. Buat permintaan
Jika anda meminta data JSON secara langsung dalam fail JSON pada pelayan, anda boleh menggunakan nama fail untuk meminta fail JSON.
respone.open(“GET”,”classes.txt”,true);
Dalam kes ini, classes.txt ialah nama fail data JSON dan permintaan ialah pembolehubah yang dicipta untuk menyimpan objek XMLHttpRequest .
2. Menghuraikan respons
Sebaik sahaja anda menerima data JSON daripada pelayan, anda boleh menghuraikan respons dalam dua cara berbeza. Anda boleh menggunakan fungsi terbina dalam JavaScript eval(), atau untuk keselamatan selanjutnya, gunakan penghurai JSON sebaliknya.
Kaedah eval() boleh mengambil rentetan JavaScript sebagai parameter dan juga boleh menukar rentetan itu kepada objek atau sebagai tindakan arahan. Jika anda meminta data JSON menggunakan sifat responseText bagi objek XMLHttpRequest, gunakan eval() untuk menukar rentetan teks JSON kepada objek JavaScript. Oleh kerana rentetan JSON selalunya mengandungi pendakap kerinting, gunakan kurungan untuk mengelilingi rentetan JSON untuk menunjukkan bahawa ia adalah ungkapan yang dinilai dan bukannya perintah untuk dijalankan.
var jsonResp=request.responseText;
jsonResp=eval(“(”+jsonResp+”)”);
Jika pelayan web menyediakan kedua-dua data JSON dan halaman permintaan, kaedah eval() adalah sesuai. Jika keselamatan terlibat, penghurai JSON adalah sesuai. Penghurai JSON hanya berfungsi pada teks JSON dan tidak melaksanakan JavaScript lain. Dalam kes ini, anda boleh menggunakan responseText, tetapi gunakan kaedah parseJSON() untuk menukar rentetan teks JSON kepada objek JavaScript. Untuk mengakses fungsi parseJOSN, anda perlu menambah rujukan kepada fail json.js pada halaman.
var jsonResp=request.responseText;
jsonResp=jsonResp.parseJSON();
Berikut ialah contoh untuk menggambarkan penggunaan mudah JSON dalam JavaScript:
<script type="text/javascript"> var user =[ { "name":”shenmiweiyi”, "QQ":306451129, "email":”shenmiweiyi@163.com” "address": [ {"City":"ZhengZhou","ZipCode":"450000"}, {"City":"BeiJing","ZipCode":"100000"} ] }, { "name":”kehao”, "QQ":254892313, "email":”kehao@163.com” "address": [ {"City":"ShangHai","ZipCode":"200000"}, {"City":"GuangZhou","ZipCode":"510000"} ] } ] alert(user[0].name+”的Email是:”user[0].email); //outputs shenmiweiyi的Email是:shenmiweiyi@163.com alert(user[1].name+”住在:”user[1].address[0].city) //outputs kehao住在:ShangHai </script>
JSON sudah pun menjadi sebahagian daripada standard JavaScript. Pada masa ini, penyemak imbas arus perdana mempunyai sokongan sempurna untuk JSON, dengan menggunakan JSON, kami boleh menyingkirkan penghuraian XML Bagi tapak web Web2.0 yang menggunakan Ajax, JSON sememangnya penyelesaian yang paling fleksibel dan ringan pada masa ini.
JSON diformatkan sebagai objek JavaScript
Format JSON secara sintaksis sama dengan kod yang mencipta objek JavaScript.
Oleh kerana ia serupa, program JavaScript boleh menukar data JSON kepada objek JavaScript dengan mudah.
Peraturan sintaks JSON
Data ialah pasangan kunci/nilai.
Data dipisahkan dengan koma.
Pendakap menyimpan objek
Kurungan persegi menyimpan tatasusunan
Data JSON - satu nama sepadan dengan satu nilai
Format data JSON ialah pasangan kunci/nilai , sama seperti sifat objek JavaScript.
Pasangan kunci/nilai terdiri daripada nama medan (dalam petikan berganda), diikuti dengan titik bertindih, dan kemudian nilai:
"FirstName":"John"
Objek JSON
Objek JSON disimpan dalam kurungan kerinting.
Sama seperti dalam JavaScript, objek boleh memegang berbilang pasangan kunci/nilai:
{"firstName":"John", "lastName":"Doe"}
JSON tatasusunan
tatasusunan JSON disimpan dalam kurungan segi empat sama.
Sama seperti dalam JavaScript, tatasusunan boleh mengandungi objek:
"pekerja":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]
In contoh di atas, objek "pekerja" ialah tatasusunan. Mengandungi tiga objek.
Setiap objek ialah rekod pekerja (nama keluarga dan nama pertama).
Tukar rentetan JSON kepada objek JavaScript
Biasanya kita membaca data JSON daripada pelayan dan memaparkan data dalam halaman web.
Demi kesederhanaan, kami menetapkan rentetan JSON terus dalam halaman web kami (anda juga boleh membaca tutorial JSON kami):
Pertama, buat rentetan JavaScript, iaitu data dalam JSON format:
var text = '{ "pekerja" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ " firstName" :"Anna" , "lastName":"Smith" },' +
'{ "firstName":"Peter" , "lastName":"Jones" } ]}';
Kemudian , gunakan fungsi terbina dalam JavaScript JSON.parse() menukar rentetan kepada objek JavaScript:
var obj = JSON.parse(text);