一、什麼是JSON?
1、JSON指的是JavaScript對象表示法(JavaScript Object Notation)
2、JSON是輕量級的文本資料交換格式
3、JSON獨立于語言
4、JSON具有自我描述性,更易了解
總結為一句話就是:JSON使用JavaScript文法來描述資料對象,但是JSON依然獨立于語言和平台,JSON解析器和JSON庫支援許多不同的程式設計語言
JSON本來用來表示JavaScript對象的一種書局文本格式,但是由于他的輕量級、易解析,操作等一些特點,漸漸的被很多語言支援
二、XML與JSON執行個體的比較:
1、使用XML表示中國部分省市的資料:
<?xml version="1.0" encoding="utf-8" ?>
<country>
<name>中國</name>
<province>
<name>黑龍江</name>
<citys>
<city>哈爾濱</city>
<city>大慶</city>
</citys>
</province>
<province>
<name>廣東</name>
<citys>
<city>廣州</city>
<city>深圳</city>
<city>珠海</city>
</citys>
</province>
<province>
<name>台灣</name>
<citys>
<city>台北</city>
<city>高雄</city>
</citys>
</province>
<province>
<name>新疆</name>
<citys>
<city>烏魯木齊</city>
</citys>
</province>
</country>
2、使用JSON表示中國部分省市資料
var country =
{
name: "中國",
provinces: [
{ name: "黑龍江", citys: { city: ["哈爾濱", "大慶"]} },
{ name: "廣東", citys: { city: ["廣州", "深圳", "珠海"]} },
{ name: "台灣", citys: { city: ["台北", "高雄"]} },
{ name: "新疆", citys: { city: ["烏魯木齊"]} }
]
}
三、JSON相比XML的不同之處:
在JSON之前,我們通常在網絡傳輸中使用的格式是XML,
- XML的特點:較好的可讀性,格式統一,解析簡單
- JSON相比XML的特點:更小、更快,更易解析
(1)JavaScript原生支援JSON,解析速度會比XML更快
(2)XML解析DOM對象的時候,浏覽器之間會産生差異
(3)JSON有很多強大的庫能幫助我們更快更簡單的完成工作
(4)沒有結束标簽,更短,讀寫速度快,能夠使用JavaScript内建eval()函數進行解析,使用數組,不使用保留字
*作用:<>XML:讀取XML文檔;使用XML DOM來循環周遊文檔;讀取值并存儲在變量中
<>JSON:讀取JSON字元串;用eval()處理JSON字元串
四、JSON的具體學習
1、JSON文法
用戶端與伺服器交換的資料無非就是兩種:數組或者對象,JSON也無非就是這兩種,JSON文法是JavaScript文法的子集,在JavaScript中用[]來表示數組,,用{}來表示對象,例如:
//JSON數組(元素為對象的數組)
var employees = [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName": "Carter" }
];
//JSON對象
var obj = {
age:20,
str:"wmyskxz",
method:function() {
alert("我愛學習");
}
};
2、解析JSON
首先來建立一個JSON對象
(1)使用HTML解析
在HTML中我們可以直接使用"."點号來直接通路JSON對象的屬性
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>JSON學習</title>
</head>
<body>
<p>
Name:<span id="name"></span><br>
Age:<span id="age"></span><br>
</p>
<script>
var JASONObject = {"name": "我沒有三顆心髒", "age": 21};
document.getElementById("name").innerHTML = JASONObject.name;
document.getElementById("age").innerHTML = JASONObject.age;
</script>
</body>
</html>
顯示效果如下:
但是通常情況下,我們拿到和上傳的并不是一個真正的jJSON對象,而是一串由JSON轉化得到的字元串,比如可以這樣表示:
<script>
var txt = '{"students":[' +
'{"name":"我沒有三顆心髒0","age":21},' +
'{"name":"我沒有三顆心髒1","age":21 }]}';
var obj = eval("(" + txt + ")");
document.getElementById("name").innerHTML = obj.students[1].name;
document.getElementById("age").innerHTML = obj.students[1].age;
</script>