JSON即JavaScript Object Notation,是一种轻量级的、纯文本的数据交换格式,非常适合于服务器与JavaScript的交互,更多关于JSON的信息请参看。
一、数据结构
1、对象(object)
对象
(object)是一个无序的“name:value”对集合,一个对象用大括号{}括起来,集合中每个“name:value”对之间用逗号分隔。

图1 object
例如一个表示人的属性的对象,用JSON表示如下:
{"name":"Jim", "sex":true, "age":10}
2、数组(array)
数组
(array)是“value”的有序集合,一个数组用中括号[]括起来,集合中每个“value”之间用逗号分隔。

图2 array
例如一个表示班级学生姓名的数组,用JSON表示如下:
["Jim", "Lilei", "Hanmeimei"]
3、值(value)
值(value)可以是双引号括起来的string、number、true/false/null、对象或数组等,这些结构可以嵌套。

图3 value
4、字符串(string)
字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。字符串(string)与C或者Java的字符串非常相似。

图4 string
5、数值(number)
数值(number)与C或者Java的数值非常相似,除去未曾使用的八进制与十六进制格式。

图5 number
二、数据处理
实际应用中,通常会是各种数据结构的复合,比如用如下JSON来表示1班中所有学生的信息:
{"class one", [
{"name":"Jim", "sex":true, "age":10}, {"name":"Lilei", "sex":true, "age":10}, {"name":"Hanmeimei", "sex":false, "age":10}]}
JSON是JavaScript的原生格式,这意味着可以直接将JSON格式的字符串直接赋值给JavaScript变量:
var class =
{"classone", [{"name":"Jim", "sex":true, "age":10}, {"name":"Lilei", "sex":true, "age":10}, {"name":"Hanmeimei", "sex":false, "age":10}]}
将JSON转换为JavaScript变量后,就可以用点号表示法来访问数据结构中的元素了,对于数组可以用索引来访问,索引从0开始,比如我们要打印姓名Jim:
class.classone[0].name
如果要修改Jim的age可以这样:
class.classone[0].age = 11
当然也可以直接将JavaScript转换回JSON格式的字符串:
var strJson = class.toJSONString()
这样就获得了一个可以在任何地方使用的文本字符串了,可以将它在客户端和服务器之间传送了(如果必要的话可以先给字符串编码)。
阅读(498) | 评论(0) | 转发(0) |