json是一种数据格式,不是一种编程语言。
json语法:
var person={
"name":"tom", //字符串
"age":19, //简单值
"skills": ['JavaScript', 'Java', 'Python', 'Lisp'], //数组
"grade":null, // null
"gender":true, // 布尔值
"school":"middle-school"
}
json不支持变量、函数和对象实例,它为一种表示结构化数据的格式。
1.简单值:语法与JavaScript相同,支持字符串、数值、布尔值、null、但不支持underfine。
2.对象:一种复杂的数据类型,表示一组无序的键值对。
3.数组:一种复杂的数据类型,表示一组有序的值得列表。
注意:js字符串和json字符串的区别:json字符串必须使用双引号。
js字面量和json的区别:1.json没有变量 2.json的末尾没有分号(不是js语句,不需要分号)
json的序列化JSON.stringify()和反序列化JSON.parse():
var person={
name:"tom",
age:12,
grade:95,
};
console.log(JSON.stringify(person));// {"name":"tom","age":12,"grade":95}
console.log(JSON.stringify(person,null," "));
/*按缩进输出
{
"name":"tom",
"age":12,
"grade":95
}
*/
console.log(JSON.stringify(person,["name"])); // {"name":"tom"} 想输出指定的属性,可以传入Array:格式为["key"]
function change(key,value){
if(typeof(value)==="string"){
return value.toUpperCase();
}
return value;
}
console.log(JSON.stringify(person,change," "));// 传入函数 {"name":"TOM","age":12,"grade":95}
var xiaoming={
name:"tom",
age:12,
grade:95,
toJSON:function(){
return {
"name":this.name,
"age":this.age
}
}
};
console.log(JSON.stringify(xiaoming)) //精确控制序列化 {"name":"tom","age":12}
console.log(JSON.parse('{"name":"小明","age":14}')); // 反序列化JSON.parse() Object {name: '小明', age: 14}