标签:3.1 rank 数组 null avl 个数 cti 1.3 string
Json(JavaScript Object Notation) JavaScript对象表示法
Json是JavaScript的一个严格的子集,利用了JavaScript中的一些模式类表示结构化的数据,因为可以吧JSON直接传给eavl(),而且不比创建DOM对象
1,JSON的语法:
JSON可以表示三种类型的值:1,简单值,可以使用与JavaScript相同的语法,可以在JSON中表示字符串,数值,布尔值和null,但是不支持undefined
2,对象,一组无序的键值对,值可以是简单值,也可以是复杂的数据类型值。
3,数组 ,有序的值的列表,值可以是简单值,对象或者数组
JSON不支持变量,函数,或者对象实例,
1.1,简单值: 5 "hello world" 字符串必须用双引号
1.2 对象:JSON对象的字面量形式,必须给属性加上双引号。 例如:{ “name”:"abcd‘, "age":10; } 和js的字面量相比首先,没有声明变量(json中没有变量的概念);其次没有末尾的分号;
例如: { " name":" ablc", "age":29, "school":{ "name": "li", "location":"hangzhou" }} 里面“school”对象包含的也是一个JSON对象
1.3 数组:JSON数组采用的是JavaScript中的数组的字面量形式
2 Json对象数组
{ "employees": [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName":"Carter" } ] } //这是一个employee对象,包含了三个员工对象
!!!!!!!!!!! 同样道理:
例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:
var people = { "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
],
"authors": [
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
],
"musicians": [
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
] }
这非常简单;现在 people包含前面看到的 JSON 格式的数据。但是,这还不够,因为访问数据的方式似乎还不明显。
在这里 people是js变量对象!!!!!,他的数值是JSON格式的数值, "programmers","authors","musicians":是键值,对于的值是三个JSON数组!!!!!数组里面包括人员对象,
尽管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进 JavaScript 变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问 programmers 列表的第一个条目的姓氏,只需在 JavaScript 中使用下面这样的代码:
people.programmers[0].lastName;
注意,数组索引是从零开始的。所以,这行代码首先访问 people变量中的数据;然后移动到称为 programmers的条目,再移动到第一个记录([0]);最后,访问 lastName键的值。结果是字符串值 “McLaughlin”。
2,var employees = [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName": "Carter" } ];
//正是一个JSON数组,里面包含三个对象。可以用employee[0].lastName; 来进行访问,,和js数组一样。
//这个访问JSON数组就和js数组一样了。employees[0].firstName
3,解析与序列化
将JSON数据结构解析成为JavaScript对象,便于访问
3.1 JSON对象
ECMAScript定义了全局对象JSON,因此可以直接用eval()函数来解析,使用eval()函数解析JSON数据结构会有风险,因为可能执行到恶意代码
JSON对象有两个方法:stringify()和parse();
最简单的情况,两个方法用于将JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生的JavaScript值。
JSON.stringify()
方法将一个 JavaScript 值转换为一个 JSON 字符串,如果指定了一个 replacer 函数,则可以替换值,或者如果指定了一个 replacer 数组,可选地仅包括指定的属性。
JSON.stringify(value[, replacer [, space]])
http://www.jb51.net/article/29893.htm
这个字符串不包括任何空格字符或者缩进。
JSON.parse()可以得到相应的JavaScript值。
标签:3.1 rank 数组 null avl 个数 cti 1.3 string
原文地址:http://www.cnblogs.com/lpfworld/p/7647729.html