1.json(javascript object notation)
js对象表示法
json 是存储和交换文本信息的语法,
json 特点:
1.轻量级的文本数据交换格式(相对于XML)
2.独立于语言 (多种语言均支持json)
3.json 具有自我描述性,更易于人理解
2.json与XML的比较
3.json语法
json 语法是javascript对象表示法语法的子集
规则:1.数据在名称/值对中 (“name” : "json语法")
2.数据由逗号分隔
3.花括号保存对象 ({"name" : "json语法" , "url" : "www.runoob.com"})
4.方括号保存数组
4.json的使用
1.eval() :eval()函数可编译并执行任何j s代码。可以解析json文本,然后生成javascript 对象
2.json 解析器: 将json转换为javascript 对象是更安全的做法,json解析器只能识别json文本,而不会编译脚本。
json解析器实际上是一个函数,输入为一个表示json 的字符串,输出为对象。
5.序列化
把任何javascript对象变成JSON,就是把这个对象序列化成一个JSON格式的字符串,这样才能通过网络传递给其他的计算机
var xiaoming = {
name: 小明,
age: 12,
gender: true,
'middle-school': '\"w3c\" Middle School',
skills: ['JavaScript','Java','python','Lisp']
};
JSON.stringify(xiaoming);//"{"name":"小明","age":14,"gender":true,"height":1.65,"grade":null,"middle-school":"\"W3C\" Middle School","skills":["JavaScript","Java","Python","Lisp"]}"
格式化输出:
JSON.stringify(xiaoming,null,' ');
//"{
"name": "小明",
"age": 14,
"gender": true,
"height": 1.65,
"grade": null,
"middle-school": "\"W3C\" Middle School",
"skills": [
"JavaScript",
"Java",
"Python",
"Lisp"
]
}"
限制输出的内容:
JSON.stringify(xiaoming,['name','skills'],' ');
//"{
"name":"小明",
"skills":[
"Javascript",
"Java",
"Python",
"Lisp"
]
}"
对输出的数据进行相应的处理:
JSON.stringify(xiaoming,convert,' ');
function convert(key,value){
if(typeof value === 'string'){
return value .toUpperCase();
}
return value;
}
精确化控制如何序列化对象,可以给对象定义一个toJSON()方法,直接返回JSON应该序列化的数据
var xiaoming = {
name: '小明',
age: 12,
gender: true,
'middle-school': '\"w3c\" Middle School',
skills: ['JavaScript','Java','python','Lisp'],
toJSON: function (){
return {
'Name': this.name,
'Age': this.age
};
}
};
JSON.stringify(xiaoming);//"{"Name": "小明","age":14}"
6反序列化
拿到一个JSON格式的字符串,我们使用JSON.parse()把它变成一个javascript对象
JSON.parse('{"name":"wu","age":12}');
//Object {name: "wu",age: 12}
JSON.parse()还可以接受一个函数,用来转换解析出的属性
JSON.parse('{"name": "小明" , "age": 12}',function(key,value){
if(typeof value =="number"){
return value*2;
}
return value;
});
//Object{name:"小明",age:28}