标签:通过 构造 表示 个数 ati 简单 双引号 构造函数 highlight
JavaScript之JSON
一.什么使JSON?
JSON的英文全程是JavaScript Object Notation(即JavaScript对象表示法),它是一种数据交换格式。是由Douglas Crockfordba把它作为IETF RFC4627提交给IETF的。我们最初需要知道的是:
二.JSON的基本语法。
JSON包括简单值、对象值以及数组。
1.简单值:与JavaScript相同,JSON支持字符串、数组、布尔值和null,但它不支持undefined。 比如说 8 ,这个数组便是一个最简单的JSON数据格式;“Hello Wrld”,这个字符串同样也是一个简单的JSON数据格式。但是JSON和JavaScript有一个很大的区别在于:JSON使用字符串时必须使用双引号,如果使用单引号会导致语法错误。
2.对象:它是JSON中的一中复杂数据类型。JSON中的对象和JavaScript的对象字面量是十分相似的。
首先,我们给出一个JavaScript中的对象字面量:
var Person={ name:"Mr Zhu", age:21 };
接着我们给出一个用JSON表示的对象:
{ "name":"Mr Zhu", "age":21 }
通过比较,我们可以看出,两者的主要区别
3.数组:它是JSON中的另外一种复杂的数据类型。它采用的语法就是使用JavaScript中的数组字面量形式。
比如:在JavaScript中,我们可以这样表示一个数组:
var value=["Mr Zhu",20,true];
而JSON是这样表达数据的:
["Mr Zhu",20,true]
通过比较,我们可以得出JSON与JavaScript两者关于数组的主要区别
三.将JavaScript对象序列化为JSON字符串。
序列化过程需要使用JSON对象的stringify()方法。该方法接受三个参数,分别是将要序列化的对象的引用、过滤器(数组或函数)以及一个决定是否在JSON字符字符串中保留缩进的选项。
1.首先,我来谈谈第一个参数。先给出以下JavaScript对象字面量代码:
var person={ name:"Mr Zhu", age:21, year:2016 };
接下来我们就可以使用JSON.stringify()方法来序列化这个对象:
var jsonText=JSON.stringify(person);
这句代码接受了第一个参数(这个参数时必选的,没有其他两个,说明其他两个不是必选的),即将JavaScript对象转化为了JSON字面量保存在了jsonText变量中。默认情况下,JSON.stringify()输出的JSON字符串不包含任何空格字符或缩进,因此实际上保存在jsonText变量中的字符串如下:
{“name”:"Mr Zhu","age":21,“year”:2016}
2.过滤器参数。文章的开头提到,过滤器参数可以是数组也可以是函数。
首先,让我们先学习过滤器参数时数组的情况。观察以下代码:
var person={ name:"Mr Zhu", age:21, year:2016 };
var jsonText=JSON.stringify(person,["name","age"]);
这时,保存在jsonText变量中的JSON字符串为:
{"name":"Mr Zhu","age":21}
也就是说,在过滤器数组参数中的属性名所对应的属性被过滤后剩了下来,而year属性则被过滤掉了,这便是我们称之为过滤器的原因。
接着,让我们学习第二个参数为函数的情况。观察以下代码:
var person={ name:"Mr Zhu", age:21, year:2016
bi }; var jsonText=JSON.springify(person,function(key,value){ switch(key){ case "age": return 18; case "year": return undefined; default: return value; } });
这是,保存在jsonText变量中的JSON字符串成了:
{"name":"Mr Zhu","age":18}
标签:通过 构造 表示 个数 ati 简单 双引号 构造函数 highlight
原文地址:http://www.cnblogs.com/zhuzhenwei918/p/5988825.html