一、json定義
JSON ( JavaScript Object Notation) ,它是一串字符串 只不過元素會使用特定的符號標註。
- {} 雙括號表示對象
- [] 中括號表示數組
- "" 雙引號內是屬性或值
- : 冒號表示後者是前者的值(這個值可以是字符串、數字、也可以是另一個數組或對象)
JSON 語法是 JavaScript 對象表示法語法的子集。
數據在名稱/值對中、數據由逗號分隔、花括號保存對象、方括號保存數組
JSON 值可以是:數字(整數或浮點數)、字符串(在雙引號中)、邏輯值(true 或 false)、數組(在方括號中)、對象(在花括號中)、null
所以 {"name": "Michael"} 可以理解爲是一個包含name爲Michael的對象
其中,JSON對象
// 花括號內爲鍵、值對 鍵必須用引號括起來,值若不是字符串則不必
var jsonObj = {
"創維電視" : 50,
"卡薩帝北京" : 40,
"家電" : 40,
"松下" : 30,
"格力" : 20,
"海爾" : 20,
"海爾商城" : 20,
"海爾客服" : 20,
"美的" : 20,
"美菱" : 20
}
二、爲什麼用json
- JSON是純文本格式,是獨立於語言和平臺的。
- 生成和解析相對於XML而言要簡單。
- 讀寫的速度更快。
三、JS 內置兩個Json方法
1、對象轉化爲字符串
任何把 JavaScript 變成 Json ,就是把這個對象序列化爲Json字符串,然後纔可以通過網絡傳遞;
JSON.stringify( {} , [ ] , "")
//參數一 :要序列化的數據(object) //參數二 :控制對象的鍵值,只想輸出指定的屬性,傳入一個數組 //參數三 :序列化後,打印輸出的格式(一個Tab ,可以更直觀查看json)
例子:
2、字符串轉換爲對象
如果我們收到一個JSON格式的字符串,只需要把它反序列化成一個JavaScript對象,就可以在JavaScript中直接使用這個對象了
JSON.parse( json.DATA )
//傳入json字符串
四、全局替換字符串
這裏我們需要用JS實現replaceAll的功能, 將所有的 ' xa" ' 替換成 ' " ' .
代碼如下,這裏的gm是固定的,g表示global,m表示multiple,也可以使用正則表達式
五、遍歷json對象和json數組
1、遍歷JSON對象代碼如下:
var packJson = {"name":"Liza", "password":"123"} ; for(var k in packJson ){//遍歷packJson 對象的每個key/value對,k爲key alert(k + " " + packJson[k]); }
2、遍歷JSON數組代碼如下:
var packJson = [{"name":"Liza", "password":"123"}, {"name":"Mike", "password":"456"}]; for(var i in packJson){//遍歷packJson 數組時,i爲索引 alert(packJson[i].name + " " + packJson[i].password); }
3.遍歷json對象,獲取鍵、值集合
var jsonObj = {
"創維電視" : 50,
"卡薩帝北京" : 40,
"家電" : 40,
"松下" : 30,
"格力" : 20,
"海爾" : 20,
"海爾商城" : 20,
"海爾客服" : 20,
"美的" : 20,
"美菱" : 20
}
var keyAry = [];
var valueAry = [];
for(var key in jsonObj){
keyAry.push(key);
valueAry.push(jsonObj[key]);
}
//打印輸出
console.log(keyAry);
console.log(valueAry);
4、添加key
jsonObj["西門子"] = 100;
5. 刪除key
deledte jsonObj["海爾"];
六. 根據key獲取value
/ 根據key獲取value,兩種方式
var value1 = eval("jsonObj." + "家電");// value1 = 40
var value2 = jsonObj["家電"];// value2 = 40