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" }
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
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"}
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"}
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"}
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"}
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" // }
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" // }
Saya ada soalan di sini. Saya rasa output harus dalam bentuk berikut...
{ "prename": "hanzichi", "presex": "male", "preage": "10" }
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!