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}