JSON简介
全称:JavaScript Object Notation既js对象标记法
是用来存储和交换文本信息的语法与XML类似,但是比XML更小更快,更易解析
如使用XML时需经过以下几步骤:
-
读取XML文档
-
使用XML DOM来循环遍历文档
-
读取值并存储在变量中
使用JSON时需经以下步骤:
-
读取JSON字符串
-
用eval处理JSON字符串
JSON数据类型
-
字符串
-
数字
-
对象
-
数组
-
布尔值
-
null
语法规则
-
数组用方括号[]表示,值为JSON数据类型,也可以是JS表达式,函数,日期,undefined
"student":[{"name":"zs","age":12},{"name":"ls","age":15}] //student为包含两个对象的数组
-
对象用大括号{}表示
-
由key/value对组成,key必须为字符串,value为合法的JSON数据类型;
-
key与value用冒号(:)分割,每对key/value用逗号(,)分割,如:
obj={"name":"ls","age":12}
-
可以使用对象名.属性名的方法访问如
obj.name
-
可以使用对象名["属性名"]的方法访问如:
obj["name"]
-
-
名称/值对(name/value)组合成数组和对象,名称置于双引号中(只能是双引号),值为字符串、数值、布尔值、null、对象和数组(不能用undefined和函数),并列的数据之间用逗号分隔如:
{ "name":"zs", "age":12 }
-
字符串必须用双引号括起来,不能用单引号;字符串中不能单独出现双引号(")和右斜杆\;如果需要双引号或右斜杆,需要使用“右斜杆+双引号或右斜杆”的形式如:
\"和\\
-
数值不能有八进制(如:055)和16进制(如:0x12)
JSON的解析与生成
JSON通常用于与服务端交换数据,所接收的一般都是字符串
-
将JSON字符串转为JS对象
str='{"name":"ls","age:15"}' obj=JSON.parse(str)
-
将JS对象转为JSON字符串
使用JSON.stringify(value,[replacer[,space]])实现转换
value:必选参数,一般为js数组或对象
replacer:可以省略,若不省略一般为函数或数组。
-
为函数,则每一组key/vaule都会调用此函数,该函数返回一个值,作为名称的值变换到结果字符串中,如果返回undefined则会被忽略
-
如果是数组则只有数组中存在有名称才能被转换,且转换后顺序与数组中的值保持一致
space:可以省略,作用于字符串排版
obj={"a":1,"b":2,"c":3,"d":4} jsonstr=JSON.stringify(obj,["a","d","c"],"one")
//结果 { one"a":1, one"d":4, one"c":3 }//因为第二个参数是数组且为a,b,c所以结果与数组值顺序对应,第三个参数为one所以每个key/vaule前加了one,如果是空格的话则为空格起到排版作用
注:当JS对象中不符合json规则时,stringify是不会转换的
-