JSON

概念

JSON是一种表示结构化数据的格式,它不局限也JavaScript的范畴,很多编程语言都有针对JSON的解析器和序列化器。

语法

JSON可以表示三种类型的值:

  • 简单值:使用与Javascript相同的语法表示字符串、数值、布尔值和null,JSON不支持Javascript中的undefined。同时,字符串必须使用双引号,单引号会导致语法错误。
  • 对象:与Javascript的对象字面量相比,JSON对象没有变量声明、没有末尾的分号、对象的属性必须加双引号。每个键值对的值可以是简单值,也可以是复杂数据类型的值。
  • 数组:JSON数组采用的就是Javascript中数组字面量形式,但是JSON数组也没有变量和分号。
各种类型值举例
  • 数字:5
  • 字符串:"Hello world!"
  • 布尔值:true
  • null:null
  • 对象:{ "name": "emi", "age": 21 }
  • 数组:["emi", 21, "student", true]
解析与序列化

ECMAScript5定义了全局对象JSON,它有两个方法:stringify()和parse()。分别用于把Javascript对象序列化为JSON字符串和把JSON字符串解析为原生Javascript值。

stringify():

var emi = {
    "name": "emiwang",
    "age": 21,
    "gender": "female"
};
var jsonText = JSON.stringify(emi);

该方法除了要序列化的Javascript对象外,还可以接受两个额外的参数,第一个是过滤函数或数组,第二个是用于控制结果中的缩进的空白符的数字或符号。

var jsonText = JSON.stringify(emi, ["name", "age"], 4);

parse():

var emiwang = JSON.parse(jsonText);

parse()方法也可以接受一个函数作为参数