json:只是一种数据格式,并不是一种编程语言是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。
json可以表示三种类型的值:简单值(基本数据类型)、对象、数组
1.简单值:json字符串必须使用双引号,单引号会导致语法错误,其他的正常表示。
2.对象:json的对象要求给对象的属性加双引号。json也不用声明变量,结尾没有分号
3.数组:也不用声明变量,也不用分号结尾。
var txt = '{ "employees" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ "firstName":"Anna" , "lastName":"Smith" },' +
'{ "firstName":"Peter" , "lastName":"Jones" } ]}';
var obj = eval ("(" + txt + ")");
json解析与序列化:
eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。序列化时,所有函数及原型成员都会别有意忽略,值为undefined的属性也会被跳过。
**json.stringify()😗*把一个js对象序列化为一个json字符串,不包含任何空格和缩进。第二个参数时过滤器、第三个参数是是否保留缩进。
第二个参数可以是数组或者函数,数组会匹配每项的属性的值,函数接受两个参数键和值,键可以是空字符串在并非键值对的值时。
第三个参数的值代表每个级别缩进几个空格最大值为10,有效的参数值会成为换行符,如果是字符串会用字符串代替空格。
**json.parse()😗*将json字符串转化为js对象。
toJson()方法:满足某些对象进行自定义序列化的需求,比如序列化特定日期,在Date对象上调用toJson(),是过滤器的补充。
序列化顺序:
1.如果存在 toJson()方法且能通过它取得有效的值,则调用该方法
2.如果有第二个参数,应用这个函数过滤器
3.对第二步返回值进行序列化
4.如果有第三个参数,执行相应的格式化
JSON 与 XML 对比
XML:扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
1.JSON(JavaScript Object Notation)是一种轻量级的文本数据交换格式,具有良好的可读和便于快速编写的特性,可在不同平台之间进行数据交换。
2.JSON 和 XML 都是人类可读的格式并且与语言无关。在现实环境中它们都支持创建,读取和解码。我们可以通过以下的因素来比较 JSON 和 XML:
冗余度
3.XML 文件庞大,文件格式复杂,传输占带宽;JSON 数据格式比较简单,易于读写,格式都是压缩的,占用带宽小。
4.XML 比 JSON 冗余,因此对我们来说编写 JSON 会更快。
数组用法
5.XML 被用来描述结构化数据,不包含数组;而 JSON 包含数组。
解析
6.可以使用 JavaScript 的 eval 方法解析 JSON。当针对 JSON 应用这个方法时,eval 返回描述的对象。