首页 > 代码库 > Json
Json
一、简介:
客户端利用Ajax请求服务器端时,数据在两者之间通常有两种格式:XML格式的数据;Json(JavaScript Object Notation)格式数据。
XML:跨平台,跨语言,是在Web Services中的通用格式。其结构包括:元素、属性、文本等;但javascript操作较复杂。
JSON:轻量级的数据交换格式,主要是为javascript服务,JSON是采用javascript中对象的格式的字符串,因此使用JavaScript的eval()方法可以轻易的将JSON字符串转换成JavaScript对象,JS就可以很轻易地从该对象中提取数据,而不需要处理DOM。然后再其由名-值”对组成。
二、Json语法
对象——名称/值对的集合。不同的语言中,它被理解为对象,纪录,结构,字典,哈希表,有键列表(keyed list),或者关联数组。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
数组——值的有序列表。在大部分语言中,它被理解为数组。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
JSON没有变量或其他控制结构。JSON只用于数据传输。
JSON语法是基于对面字面量和数组字面量的JavaScript语法。当使用字面量时,将包括数据本身,但不包括生成数据的表达式。
1、 数据类型
JSON数据结构包含以下数据类型:字符、数字、布尔值(true/false)、null、对象,数组。
JSON字符串必须使用双引号括起来。它们使用标准的JavaScript转义序列。因此在以下列字符的前面要添加一个反斜线:
JSON具有以下这些形式:”(引号)、b(空格)、n(新行)、f(换页)、r(回车)、t(水平定位)、u(为Unicode字符增加4个数位)、\(反斜线符号)、/(正斜杠符号)。
2、对象字面量
JSON使用字面量来表示对象,如果有一个以上的成员对象,则在JSON中,可以将其表示为一个包含拥有两个对象的数组的对象。下列代码显示JOSN文本形式的people对象:
{“memeber”:[
{
“name”:”Tom”,
“age”:22,
“country”:”USA”
},
{
“name”:”WangMing”,
“age”:25,
“country”:”China”
}
]
}
3、使用JSON解析器
可以使用JSON解析器从对象和数组中创建JSON文本或者JSON文本中创建对象和数组。JSON站占www.json.rog/json.js上提供有JSON解析器,通过将下列代码加入到页面的头部上即可使用。JSON解析器提供了两个函数:toJSONString()和parseJSON()。
toJSONString()方法被添加到JavaScript Object和Array定义中,该方法能将JavaScript对象或数组转换成JSON文本。不必将对象或数组转换成字面量就能使用该方法。
parseJSON()方法能从JSON文本中创建对象或数组。
(二)使用XMLHttpRequest对象创建JSON数据请求
1、创建请求
如果直接请求服务器上一个JSON文件中的JSON数据,则可以利用文件名来请求JSON文件。
respone.open(“GET”,”classes.txt”,true);
在这种情况下,classes.txt是JSON数据文件的名称,request是创建用来存放XMLHttpRequest对象的变量。
2、 解析响应
一旦接受服务器的JSON数据,就可以采用两种不同的方式解析该响应。可以使用JavaScript的内置函数eval(),或者为了进一步的安全,使用JSON解析器代替。
eval()方法可以把JavaScript字符串当作参数,还可以将该字符串转换成对象,或作为命令动作。如果使用XMLHttpRequest对象的responseText属性请求JSON数据,那么使用eval()将JSON文本字符串转换成JavaScript对象。因为JSON字符串常包包含花括号,所以用圆括号来括住JSON字符串,以表明字它是一个求值表达式,而不是一个要运行的命令。
var jsonResp=request.responseText;
jsonResp=eval(“(”+jsonResp+”)”);
如果Web服务器既提供JSON数据也提供请求页面,则适合选用eval()方法。如果涉及安全,则适合使用JSON解析器。JSON解析器只作用于JSON文本,并且不执行其他JavaScript。在这种情况下,可以使用responseText,但要使用parseJSON()方法将JSON文本字符串转换成JavaScript对象。要访问parseJOSN函数,需要要添加引用json.js文件到页面中。
var jsonResp=request.responseText;
jsonResp=jsonResp.parseJSON();
下面以实例来说明在JavaScript中简单使用JSON:
<script type="text/javascript">
var user =[
{
"name":”shenmiweiyi”,
"QQ":306451129,
"email":”shenmiweiyi@163.com”
"address":
[
{"City":"ZhengZhou","ZipCode":"450000"},
{"City":"BeiJing","ZipCode":"100000"}
]
},
{
"name":”kehao”,
"QQ":254892313,
"email":”kehao@163.com”
"address":
[
{"City":"ShangHai","ZipCode":"200000"},
{"City":"GuangZhou","ZipCode":"510000"}
]
}
]
alert(user[0].name+”的Email是:”user[0].email); //outputs shenmiweiyi的Email是:shenmiweiyi@163.com
alert(user[1].name+”住在:”user[1].address[0].city) //outputs kehao住在:ShangHai
</script>
JSON已经是JavaScript标准的一部分。目前,主流的浏览器对JSON支持都非常完美,应用JSON,我们可以从XML的解析中摆脱出来,对那些应用Ajax的Web2.0网站来说,JSON确实是目前最灵活的轻量级方案。
Json