JSON是javascri Object Notatio(javascript对象表示法)的简称。它是一种轻量级的数据交换格式。
JSON是javascript的一个严格的子集,是基于javascript的对象字面量表示法来表示结构化的数据。
1.JSON语法
支持三种数据类型,注意:不支持变量、函数、对象实例。
1.简单值:可以表示字符串、数字、布尔值、以及null。注意不支持undefined。字符串必须使用双引号。
2.对象:表示无序的键值对。对象没有变量和分号。而且对象的属性值必须加双引号。
example:
{ "name":"tian" "age":21, "school":"xidian" }
3.数组:有序的值列表。数组没有变量和分号。
[{ "title":"hello"}, "name",21,true ]
二、JSON对象的方法
1.stringify():把JSON对象序列化为JSON字符串
该方法接收三个参数;
a.要序列化的JSON对象,必须的
b.指定序列化的方式。是个过滤器。可以是数组,也可以是函数(成为过滤函数)
若为数组,则筛选出数组中列出的属性。
若为函数,该函数接收两个参数,属性名key,属性值value。根据函数的返回值决定序列化的结果。对象的每个属性都会经过过滤器。
如果返回值是undefined,则忽略相应的属性。
c.表示是否在JSON字符串中保留缩进
若为数字,缩进的字符数,结果也会包含换行符。
若为字符串,将其作为缩进字符。
d. 由于JSON.stringify()方法有时不能满足某些对象序列化的而要求。有些时候,会给对象添加toJSON方法,返回其自身的JSON数据格式。
toJSON()可以作为函数过滤器的补充。
总结:JSON.stringify()的序列化对象的顺序如下:
- 如果javascript对象存在toJSON()方法,而且该方法能取得有效值,则调用该方法。否则,返回javascript对象对象本身。
- 如果有第二个参数,应用这个函数过滤器。传入过滤器的值是第一步返回的值。
- 对第二步中返回的每个值进行相应的序列化。
- 如果有第三个参数,执行相应的格式化。
2.parse():把javascript字符串解析为JSON对象
该方法接收三个参数;
a.要解析的javascript字符串,必须的
b.还原函数,可选。应该用在每个键值对。