Rumah > hujung hadapan web > tutorial js > Pengenalan kepada JSON dan ringkasan kemahiran usage_javascript

Pengenalan kepada JSON dan ringkasan kemahiran usage_javascript

WBOY
Lepaskan: 2016-05-16 15:14:28
asal
1276 orang telah melayarinya

JSON (JavaScript Object Notation), JavaScript Object Notation, ialah format pertukaran data yang ringan. Ia sangat mudah untuk pengaturcara memproses data, dan ia juga mudah untuk mesin menghuraikan dan menjana data. Ia digunakan secara meluas.

JSON ialah format pertukaran data yang ringan Bahagian dalam fail format JSON boleh kelihatan seperti ini:

{
"name": "hanzichi",
"sex": "male"
}
Salin selepas log masuk

Nampaknya kesemuanya adalah pasangan nilai kunci, sangat serupa dengan objek js, bukan? Betul, tetapi pada masa yang sama JSON menyatakan rasa tidak puas hati saya tidak boleh kelihatan sama dengan objek js saya harus mempunyai personaliti saya sendiri, jadi ia ditetapkan bahawa kunci dalam pasangan nilai kunci mesti menggunakan petikan berganda! Pada masa yang sama, ditetapkan bahawa terdapat keperluan tertentu untuk nilai pasangan nilai kunci:

Nilai JSON boleh menjadi:

Nombor (integer atau titik terapung)
Rentetan (dalam petikan berganda)
Nilai logik (benar atau salah)
Tatasusunan (dalam kurungan segi empat sama)
Objek (dalam kurungan kerinting)

null

Kecuali untuk 6 jenis di atas, tidak ada yang lain tidak terdefinisi atau NAN seperti js, dan JSON enggan digunakan.

Bagaimana untuk menggunakan JSON?

JSON biasanya bergerak dalam bentuk rentetan semasa proses interaksi data, jadi untuk js, cara menukar rentetan json dan objek js kepada dan dari satu sama lain adalah amat penting.

kaedah eval (rentetan json -> objek js)

var jsonStr = '{"name": "hanzichi", "sex": "male"}';
var ans = eval('(' + jsonStr + ')');
console.log(ans.name, ans.sex); // hanzichi male
Salin selepas log masuk

Fungsi eval sangat pantas, tetapi ia boleh menyusun sebarang kod javascirpt, yang boleh menyebabkan masalah keselamatan. Penggunaan eval adalah berdasarkan andaian bahawa parameter kod masuk boleh dipercayai. Terdapat beberapa kes di mana pelanggan mungkin tidak dipercayai. Jika ia berdasarkan pertimbangan keselamatan, sebaiknya gunakan penghurai JSON hanya akan menerima teks JSON, jadi ia lebih selamat, seperti berikut.

JSON.parse(json字符串 -> js对象)
var jsonStr = '{"name": "hanzichi", "sex": "male"}';
var obj = JSON.parse(jsonStr);
console.log(typeof obj, obj); // object Object {name: "hanzichi", sex: "male"}
Salin selepas log masuk

Parameter kedua boleh menjadi fungsi, dan nilai boleh dipadamkan:

var jsonStr = '{"name": "hanzichi", "sex": "male", "age": 10}';
var obj = JSON.parse(jsonStr, function(key, value) {
if(key === 'name') {
return 'my name is ' + value;
}
return value;
});
console.log(typeof obj, obj); // object Object {name: "my name is hanzichi", sex: "male", age: 10}
JSON.stringify(js对象 -> json字符串)
var obj = {name: 'hanzichi', sex: 'male', age: '10'};
var jsonStr = JSON.stringify(obj);
console.log(jsonStr); // {"name":"hanzichi","sex":"male","age":"10"}
Salin selepas log masuk

Anda juga boleh menambah parameter untuk menentukan atribut yang perlu ditukar kepada rentetan json (dalam bentuk tatasusunan, hanya atribut objek js dengan nama yang sama dengan tatasusunan akan ditukar):

var obj = {name: 'hanzichi', sex: 'male', age: '10'};
var jsonStr = JSON.stringify(obj, ['name']);
console.log(jsonStr); // {"name":"hanzichi"}
Salin selepas log masuk

Parameter kedua juga boleh menjadi fungsi, yang boleh memadamkan atribut yang memenuhi syarat (atau menukar nilai atribut. Tiada pulangan bermakna meninggalkan atribut dan nilai pulangan menunjukkan nilai kunci dalam rentetan json )

var obj = {name: 'hanzichi', sex: 'male', age: '10'};
var jsonStr = JSON.stringify(obj, function(key, value) {
if(key === 'name') {
return 'my name is ' + value;
}
return value;
});
console.log(jsonStr); // {"name":"my name is hanzichi","sex":"male","age":"10"}
Salin selepas log masuk

Boleh juga terdapat parameter ketiga, yang boleh menjadi nombor atau rentetan.

Jika ia adalah nombor, ia bermakna lekukan Jika nombor melebihi 10, ia akan diproses sebagai 10.

var obj = {name: 'hanzichi', sex: 'male', age: '10'};
var jsonStr = JSON.stringify(obj, null, 4);
console.log(jsonStr); 
// {
// "name": "hanzichi",
// "sex": "male",
// "age": "10"
// }
Salin selepas log masuk

juga boleh menjadi rentetan ini akan ditambah di hadapan atribut sebagai awalan Begitu juga, jika panjang rentetan melebihi 10, hanya 10 akan dipintas:

var obj = {name: 'hanzichi', sex: 'male', age: '10'};
var jsonStr = JSON.stringify(obj, null, 'pre');
console.log(jsonStr); 
// {
// pre"name": "hanzichi",
// pre"sex": "male",
// pre"age": "10"
// }
Salin selepas log masuk

Saya ada soalan di sini. Saya rasa output harus dalam bentuk berikut...

{
"prename": "hanzichi",
"presex": "male",
"preage": "10"
}
Salin selepas log masuk

Jika sesiapa tahu, sila beritahu saya...

Ringkasan

Sudah tentu, ie8 yang legenda (dan ke bawah) tidak boleh menggunakan kaedah JSON.parse() dan JSON.stringify() kerana beberapa kecacatan, dan eval() nampaknya tidak selamat jika anda ingin serasi dengannya, anda boleh rujuk json2.js .

Kandungan di atas memberi anda pengenalan kepada JSON dan ringkasan penggunaannya. Saya harap ia akan membantu anda!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan