1:
JSON(JavaScriptObject Notation)一種簡(jiǎn)單的數(shù)據(jù)格式,比xml更輕巧。JSON是JavaScript原生格式,這意味著在JavaScript中處理JSON數(shù)據(jù)不需要任何特殊的API或工具包。
JSON的規(guī)則很簡(jiǎn)單:對(duì)象是一個(gè)無序的“‘名稱/值'對(duì)”集合。一個(gè)對(duì)象以“{”(左括號(hào))開始,“}”(右括號(hào))結(jié)束。每個(gè)“名稱”后跟一個(gè)“:”(冒號(hào));“‘名稱/值'對(duì)”之間使用“,”(逗號(hào))分隔。
JSON用冒號(hào)(而不是等號(hào))來賦值。每一條賦值語(yǔ)句用逗號(hào)分開。整個(gè)對(duì)象用大括號(hào)封裝起來??捎么罄ㄌ?hào)分級(jí)嵌套數(shù)據(jù)。
對(duì)象描述中存儲(chǔ)的數(shù)據(jù)可以是字符串,數(shù)字或者布爾值。對(duì)象描述也可存儲(chǔ)函數(shù),那就是對(duì)象的方法。
span style="font-size:18px;">{"person": {
"name":"Andy Budd",
"website":"http://andybudd.com/",
"email":"andy@clearleft.com"
}
}/span>
JSON 只是一種文本字符串。它被存儲(chǔ)在responseText 屬性中
為了讀取存儲(chǔ)在 responseText 屬性中的JSON 數(shù)據(jù),需要根據(jù)JavaScript 的eval語(yǔ)句。函數(shù) eval會(huì)把一個(gè)字符串當(dāng)作它的參數(shù)。然后這個(gè)字符串會(huì)被當(dāng)作 JavaScript 代碼來執(zhí)行。因?yàn)?JSON 的字符串就是由 JavaScript 代碼構(gòu)成的,所以它本身是可執(zhí)行的
2:案例
%@ page language="java" pageEncoding="UTF-8"%>
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
head>
meta http-equiv="content-type" content="text/html; charset=utf-8" />
title>People at Clearleft/title>
style type="text/css">
@import url("clearleft.css");
/style>
script type="text/javascript">
window.onload=function(){
var aNodes=document.getElementsByTagName("a");
for(var i = 0;i aNodes.length; i++){
aNodes[i].onclick=function(){
var request=new XMLHttpRequest();
var url=this.href;
var method="GET";
request.open(method,url);
request.send(null);
request.onreadystatechange=function(){
if(request.readyState==4){
if(request.status==200||request==304){
var result=request.responseText; //json被存儲(chǔ)在responseText屬性中
var object=eval("("+result+")"); //讀取responseText中的json數(shù)據(jù)
var name= object.person.name; //讀取json對(duì)象中存儲(chǔ)的數(shù)據(jù)
var website= object.person.website;
var email= object.person.email;
var aNode=document.createElement("a");
aNode.appendChild(document.createTextNode(name+":"+"email"+":"+website));
aNode.href="mailTo"+"email"+",website";
var h2Node=document.createElement("h2");
h2Node.appendChild(aNode);
var dtails=document.getElementById("details");
details.innerHTML=""; //防止重復(fù)的添加字符串
dtails.appendChild(h2Node);
}
}
}
return false;
}
}
};
/script>
/head>
body>
h1>
People
/h1>
ul>
li>
a href="files/andy.js">Andy/a>
/li>
li>
a href="files/richard.js">Richard/a>
/li>
li>
a href="files/jeremy.js">Jeremy/a>
/li>
/ul>
div id="details">/div>
/body>
/html>