1. 全称: JavaScript Object Notation。
2. json是一种结构化数据格式,不从属于某一种语言。
3. json 可以表示哪些类型的值?
① 简单值:字符串、数值、布尔值和 null
② 对象:json 中的对象没有变量和末尾的分号; json 中对象的属性必须加双引号
③ 数组:json 中的数组也没有变量和末尾的分号。
4. json 字符串必须用双引号,单引号会导致语法错误。
5. ES5 定义了全局对象 JSON,JSON 对象有两个方法:stringify() 和 parse(),分别用于将JavaScript 对象序列化为 JSON 字符串和把 JSON 字符串解析为原生 JavaScript 值。
注:序列化 JavaScript 对象时,函数及原型对象被有意忽略,不体现在结果中,值为 undefined 的属性也会被跳过。JSON.parse() 方法中传入的字符串必须是有效的json.
6. JSON.stringify(obj , 过滤器 , 缩进)
① 第二个参数可以是一个数组,也可以是一个函数。若为函数时,接收两个参数:属性名和属性值,可以改变序列化对象的结果,若函数返回值为 undefined,那么相应的属性被删除。
② 第三个参数是一个选项,表示是否在 json 字符串中保留缩进。为数值则表示每个级别缩进的空格数。也可插入换行符增加可读性,eg: JSON.stringify(book,null,"--"),缩进字符不能超过10个字符长。
7. JSON.stringify() 不能满足序列化需求时可以给对象定义 toJSON() 方法。序列化顺序:
① 存在 toJSON() 方法并且通过它取到有效值,调用该方法,否则返回对象本身;
② 若存在第二个参数,应用过滤器,返回值为第一步的返回值;
③ 对第二步返回的每个值执行序列化;
④ 如果提供了第三个参数,执行相应的格式化。
8. JSON.parse() 也可以接收另一个参数,该参数是一个函数(还原函数)。(场景:日期字符串转换为 Date 对象时)
问题:json 与 xml 的 区别。
可参考:https://www.cnblogs.com/gslblog/p/6664641.html