## 3.5.1 json簡介
? JSON全稱"JavaScript Object Notation",意思是JavaScript對象表示法,它是一種基于文本,獨立于語言的輕量級數據交換格式。
XML也是一種數據交換格式,為什么沒有選擇XML呢?因為XML雖然可以作為跨平臺的數據交換格式,但是在JS中處理XML非常不方便,同時XML標記比數據多,增加了交換產生的流量,
而json沒有附加任何標記,在JS中可作為對象處理,所以更傾向于JSON來交換數據。
<br/>
## 3.5.2 json的兩種結構
? json簡單說就是javascript中的對象和數組,所以這兩種結構就是對象和數組兩種結構,通過這兩種結構可以表示各種復雜的結構。
1. 對象:對象在js中表示為“{}”括起來的內容,數據結構為 {key:value,key:value,...}的鍵值對的結構,在面向對象的語言中,key為對象的屬性,value為對應的屬性值,所以很容易理解,取值方法為 對象.key 獲取屬性值,這個屬性值的類型可以是 數字、字符串、數組、對象幾種。
```
var jsonObj = { "name": "tom", "age": 12 }
```
2. 數組:數組在js中是中括號“[]”括起來的內容,數據結構為 ["java","javascript","vb",...],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數字、字符串、數組、對象幾種。
```
var jsonArr = [
{ "id": 1, "name": "john" },
{"age":13,"address":"str1"}
]
```
經過對象、數組 這2種結構就可以組合成復雜的數據結構了。
<br/>
## 3.5.3 json字符串
~~~
var Str = "this is a String"; //字符串
var jsonObj = {Name:"dick",age:"20",ID:"160512"}; //json對象
var jsonStr = "{Name:"dick",age:"20",ID:"160512"}"; //json字符串
//json字符串指的是符合json格式要求的js字符串
~~~
<br/>
## 3.5.4 在JS中如何使用JSON
? JSON是JS的一個子集,所以可以在JS中輕松地讀,寫JSON。讀和寫JSON都有兩種方法,分別是利用”.”操作符和“\[key\]”的方式。
我們首先定義一個JSON對象,代碼如下。
~~~
var obj = {
1: "value1",
"2": "value2",
count: 3,
person: [ //數組結構JSON對象,可以嵌套使用
{
id: 1,
name: "張三"
},
{
id: 2,
name: "李四"
}
],
object: { //對象結構JSON對象
id: 1,
msg: "對象里的對象"
}
};
~~~
1. 從JSON中讀數據
~~~
function ReadJSON() {
alert(obj.1); //會報語法錯誤,可以用alert(obj["1"]);說明數字最好不要做關鍵字
alert(obj.2); //同上
alert(obj.person[0].name); //或者alert(obj.person[0]["name"])
alert(obj.object.msg); //或者alert(obj.object["msg"])
}
~~~
2. 向JSON中寫數據
比如要往JSON中增加一條數據,代碼如下:
~~~
function Add() {
//往JSON對象中增加了一條記錄
obj.sex= "男" //或者obj["sex"]="男"
}
~~~
增加數據后的json對象如圖

3. 修改JSON中的數據
我們現在要修改JSON中count的值,代碼如下:
~~~
function Update() {
obj.count = 10; //或obj["count"]=10
}
~~~
4. 刪除JSON中的數據
我們現在實現從JSON中刪除count這條數據,代碼如下:
~~~
function Delete() {
delete obj.count;
}
~~~
5. 遍歷JSON對象
可以使用for…in…循環來遍歷JSON對象中的數據,比如我們要遍歷輸出obj對象的值,代碼如下:
```
function Traversal() {
for (var c in obj) {
console.log(c + ":", obj[c]);
}
}
```
程序輸出結果為:
****