JSON
可以表示三种类型的值: (以下笔记主要参考《JavaScript高级程序设计》,部分来源自己动手。)
简单值: 基本语法与JS 一致,但不支持特殊值undefined
对象: 对象作为一种复杂数据类型,表示一组有序的键值对。
数组: 数组也作为一种复杂数据类型,表示一组有序的值的列表。
简单值:
可表示数字,字符串及null值, 注意:字符串必须用双引号,单引号会导致语法出错。
对象:
JSON中的对象与javascript中的字面量稍有不同,
下面是一个javascript的对象字面量:
JSON中要求给属性加双引号,且JSON中没有变量概念,因此JSON表示上述对象的方式如下:
且末尾不需要分号。
JSON对象可以嵌套,如下:
尽管存在两个同名的属性,但其各属于不同的对象,因此没有任务冲突。
数组:
同样,首先来对比javascript中的数组字面量:
var values = [25,"hi",true];
在JSON中,可以采用同样的语法表示一个数组类型:
[25,"hi",true]
注意没有分号和变量。
把数组和对象组合起来,可以构成更加复杂的数据集合:
这个数组包含一些图书对象,然而每个对象中的authors属性的值又是一个数组。
JSON对象有两个方法stringify()和parse():
stringify(): 用于把JavaScript对象序列化为JSON字符串。
parse(): 把JSON字符串解析为原生JavaScript值。
book与bookCopy具有相同的属性,但它们是独立的,没有任何关系的对象。
stringify()除了接收要序列化的JavaScript对象外,还可接收两个参数,第一个是一个 过滤器 ,可以是一个 数组 (假如是数组,JSON.stringify()只会列出数组中列出的属性,),也可以是一个 函数 (函数接收两个参数,属性名(键)和属性值,根据属性名可以知道如何处理序列化的对象中的属性,属性名只能是字符串,而值是想要返回的值,不一定是键值对结构时的值,键名可以是空字符串,假如键名是空字符串,结果将会返回该空字符串对应的值,不再是JSON格式数据,这是我自己测试结果,有待大家一起验证。假如函数返回了undefined,结果将会忽略掉对应的键名)下面看例子:
打印结果为
假如在switch语句中添加一个
第二个打印结果就变成:
只有文本,不再是JSON格式了。
最后一个是一个 选项 ,表示JSON字符串中是否保留缩进。如果这个参数是一个数值,则表示的是每个级别缩进的空格数,如果是一个字符而非数值,则这个字符串将在JSON字符串中被用作缩进字符,(而非空格。如制表符,短划线等)
toJSON()方法 (对这个方法不是很理解)
简单值: 基本语法与JS 一致,但不支持特殊值undefined
对象: 对象作为一种复杂数据类型,表示一组有序的键值对。
数组: 数组也作为一种复杂数据类型,表示一组有序的值的列表。
简单值:
可表示数字,字符串及null值, 注意:字符串必须用双引号,单引号会导致语法出错。
对象:
JSON中的对象与javascript中的字面量稍有不同,
下面是一个javascript的对象字面量:
JSON中要求给属性加双引号,且JSON中没有变量概念,因此JSON表示上述对象的方式如下:
且末尾不需要分号。
JSON对象可以嵌套,如下:
尽管存在两个同名的属性,但其各属于不同的对象,因此没有任务冲突。
数组:
同样,首先来对比javascript中的数组字面量:
var values = [25,"hi",true];
在JSON中,可以采用同样的语法表示一个数组类型:
[25,"hi",true]
注意没有分号和变量。
把数组和对象组合起来,可以构成更加复杂的数据集合:
这个数组包含一些图书对象,然而每个对象中的authors属性的值又是一个数组。
JSON对象有两个方法stringify()和parse():
stringify(): 用于把JavaScript对象序列化为JSON字符串。
parse(): 把JSON字符串解析为原生JavaScript值。
book与bookCopy具有相同的属性,但它们是独立的,没有任何关系的对象。
stringify()除了接收要序列化的JavaScript对象外,还可接收两个参数,第一个是一个 过滤器 ,可以是一个 数组 (假如是数组,JSON.stringify()只会列出数组中列出的属性,),也可以是一个 函数 (函数接收两个参数,属性名(键)和属性值,根据属性名可以知道如何处理序列化的对象中的属性,属性名只能是字符串,而值是想要返回的值,不一定是键值对结构时的值,键名可以是空字符串,假如键名是空字符串,结果将会返回该空字符串对应的值,不再是JSON格式数据,这是我自己测试结果,有待大家一起验证。假如函数返回了undefined,结果将会忽略掉对应的键名)下面看例子:
打印结果为
假如在switch语句中添加一个
第二个打印结果就变成:
只有文本,不再是JSON格式了。
最后一个是一个 选项 ,表示JSON字符串中是否保留缩进。如果这个参数是一个数值,则表示的是每个级别缩进的空格数,如果是一个字符而非数值,则这个字符串将在JSON字符串中被用作缩进字符,(而非空格。如制表符,短划线等)
toJSON()方法 (对这个方法不是很理解)
可以为任何对象添加toJSON()方法,如:
文章来源:It人才网