Json文法
- 資料使用名:值對表示
- 使用{}儲存對象,每個名稱後面跟着一個‘:’(冒号),名/值對使用,(逗号)分割
- 使用【】儲存數組,數組值使用,(逗号)分割。
- 簡單例子
{
"book" : [
{
"id" : "01",
"language" : "java",
"edition" : "third"
},
{
"id" : "02",
"language" : "c++",
"edition" : "sencond"
} ]
}
- Json支援一下兩種資料結構
名/值對集合:這一資料結構由不同的程式設計語言支援
有序的值清單:包括數組、清單、向量或序列等等。
Json的文法規則
Json文法是JavaScript對象表示法文法的子集
Json文法規則不複雜,它參考了C語言家族的一些習慣,學習起來并不感到陌生。
- 資料在 名稱/值對中
- 資料由逗号分隔
- 花括号儲存對象
- 方括号儲存數組
- 書寫格式
名稱:值對
注意:
名稱:值對包括字段名稱(在雙引号中),後面寫一個冒号,然後就是值
例:
"firstName" : "Json"
Json的值
可以是:
- 數字(整數或浮點數)
- 字元串(在雙引号中)
- 邏輯值(true或false)
- 數組(在方括号中)
- 對象(在花括号中)
- null
Json對象
- Json對象在花括号中書寫
-
對象可以包含多個名稱 / 值對
例如:
{
"firstName" : "JavaScript" , "lastName" : "Json"
}
Json數組
- Json數組在方括号中書寫:
- 數組可以包含多個對象:
{
"employees" : [
{
"firstName" : "John" , "lastName" : "Doe"
},
{
"firstName" : "Anna" , "lastName" : "Smith"
}]
}
上面的例子中,對象employees是包含了兩個對象的數組,每一個對象代表一條關于某人(有名和姓)的記錄
Json使用JavaScript文法
因為Json使用JavaScript文法,是以無需額外的軟體就能處理JavaScript中的Json
var employees = [
{
"firstName" : "John" , "lastName" : "Doe"
},
{
"firstName" : "Anna" , "lastName" : "Smith"
}
];
- 通路如下:
employees[0].lastName;
- 修改如下:
employees[0].lastName = "Jonse";
Json使用
Json經常應用到的場景是:
在背景應用程式中将響應資料封裝成Json格式,傳到前台之後,需要将Json格式轉換為JavaScript對象,然後再網頁中使用該資料。
把Json文本轉換為JavaScript對象
Json最常見的用法之一,是從web伺服器上讀取Json資料(作為檔案或作為HttpRequest),将Json資料轉換為JavaScript對象,然後再網頁上使用該資料。
- 建立包含Json文法的JavaScript字元串
var txt = '{
"employees" : [ ' +
' { "firstName" : "John" ,
"lastName" : "Anna"
},' +
'{ "firstName" : "Smith" ,
"lastName" : "Peter"
}
]
}'
由于Json是JavaScript文法的子集,JavaScript函數eval()可用于将Json文本轉換為JavaScript對象。
eval()函數使用的是JavaScript編譯器,可解析Json文本,然後生成JavaScript對象,必須把文本包圍在括号中,這樣才能避免文法錯誤。
在網頁中使用JavaScript對象:
var obj = eval (" ( " + txt +" ) ");
<p>
firstName : <span id = "fname"></span><br />
lastName : <span id = "lname"></span><br />
</p>
<script>
document.getElementById("fname").innerHTML = obj.employees[1].firstName
document.getElementById("lname").innerHTML = obj.employees[1].lastName
</script>