JSON 基礎知識總結
JSON是什麼
JSON,說白了就是JavaScript用來處理數據的一種格式,這種格式非常簡單易用。JSON大部分都是用來處理JavaScript和web服務器端之間的數據交換,把後台web服務器的數據傳遞到前台,然後使用JavaScript進行處理,例如ajax等
JSON支持的語言非常多,包括JavaScript、C#、PHP、Java等等,這是由於JSON獨立於語言的輕量級的數據交換格式,這個特點有點類似於SQL語言
JSON的結構
JSON結構共有2種:無序的對象結構、有序的數組結構;
無序的對象結構
對象結構是使用大括號“{}”括起來的,大括號內是由0個或多個用英文逗號分隔的“關鍵字:值”對(key:value)構成的
var jsonObj = {
"鍵名1":值1,
"鍵名2":值2,
……
"鍵名n":值n
}
這裏的鍵名是字符串,但是值可以是數值、字符串、對象、數組或邏輯true和false
有序的數組結構
JSON數組結構是用中括號“[]”括起來,中括號內部由0個或多個以英文逗號“,”分隔的值列表組成
var arr =
[
{
"鍵名1":值1,
"鍵名2":值2
},
{
"鍵名3":值3,
"鍵名4":值4
},
……
]
在JSON數組中,每一對“{}”相當於一個JSON對象
JSON 數據格式
JSON是JavaScript Object Notation的簡稱,是一種輕量的數據表示方法。json格式采用key:value的方式記錄數據,非常直觀,比XML簡潔,因而大受歡迎
添加 JSON
簡單地說,JSON 可以將 JavaScript 對象中表示的一組數據轉換為字符串,然後就可以在函數之間輕鬆地傳遞這個字符串,或者在異步應用程序中將字符串從 Web 客戶端傳遞給服務器端程序。這個字符串看起來有點兒古怪,但是 JavaScript 很容易解釋它,而且 JSON 可以表示比名稱/值對更複雜的結構。例如,可以表示數組和複雜的對象,而不僅僅是鍵和值的簡單列表
值的數組
當需要表示一組值時,JSON 不但能夠提高可讀性,而且可以減少複雜性
{ "people": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
]}
掌握了JSON格式後,在JavaScript中將JSON數據賦值給變量就很簡單了。JSON是JavaScript原生格式,這意味著在JavaScript中處理JSON數據不需要任何特殊的 API 或工具包
例如,可以創建一個新的JavaScript變量,然後將 JSON 格式的數據字符串直接賦值給它
var people = { "people": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
],
"authors": [
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
]
}
訪問數據
實際上,隻需用點號表示法來表示數組元素。所以,要想訪問 people 列表的第一個條目的姓氏,隻需在 JavaScript 中使用下麵這樣的代碼:
people.people[0].lastName;
利用這樣的語法,可以處理任何 JSON 格式的數據
轉換回字符串
String newJSONtext = people.toJSONString();
可以將任何 JavaScript 對象轉換為 JSON 文本
JSON 數據類型
JSON 格式支持以下數據類型:
類型 | 描述 |
---|---|
數字型(Number) | JavaScript 中的雙精度浮點型格式 |
字符串型(String) | 雙引號包裹的 Unicode 字符和反斜杠轉義字符 |
布爾型(Boolean) | true 或 false |
數組(Array) | 有序的值序列 |
值(Value) | 可以是字符串,數字,true 或 false,null 等等 |
對象(Object) | 無序的鍵:值對集合 |
空格(Whitespace) | 可用於任意符號對之間 |
null | 空 |
數字型
JavaScript 中的雙精度浮點型格式,取決於實現。不能使用八進製和十六進製格式,在數字中不能使用 NaN 和 Infinity
下表展示了數字類型:
類型 | 描述 |
---|---|
整形(Integer) | 數字1-9,0和正負數 |
分數(Fraction) | 分數,比如 .3,.9 |
指數(Exponent) | 指數,比如 e,e+,e-,E,E+,E- |
字符串型
零個或多個雙引號包裹的 Unicode 字符以及反斜杠轉義序列
字符就是隻有一個字符的字符串,長度為 1
下表展示了字符串類型:
類型 | 描述 |
---|---|
" | 雙引號 |
\ | 反斜線 |
/ | 斜線 |
b | 退格符 |
f | 換頁符 |
n | 換行符 |
r | 回車符 |
t | 水平製表符 |
u | 四位十六進製數字 |
布爾型
包含 true 和 false 兩個值
數組
它是一個有序的值集合,使用方括號閉合,這意味著數組以 [ 開始,以 ] 結尾,值使用 ,(逗號)分割,數組索引可以以 0 或 1 開始,當鍵名是連續的整數時應該使用數組
{
"books": [
{ "language":"Java" , "edition":"second" },
{ "language":"C++" , "lastName":"fifth" },
{ "language":"C" , "lastName":"third" }
]
}
對象
它是一個無序的名/值對集合,對象使用大括號閉合,以 '{' 開始,以 '}' 結尾,每個名稱後麵都跟隨一個 ':'(冒號),名/值對使用,(逗號)分割,鍵名必須是字符串並且不能同名,當鍵名是任意字符串時應該使用對象
{
"id": "011A",
"language": "JAVA",
"price": 500,
}
創建簡單的對象
JSON對象可以使用JavaScript創建。我們來看看使用 JavaScript 創建 JSON 對象的各種方式:
1.創建一個空對象:
var JSONObj = {};
2.創建一個新對象:
var JSONObj = new Object();
3.創建一個 bookname 屬性值為字符串,price屬性值為數字的對象。可以通過使用 '.' 運算符訪問屬性
var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };
創建數組對象
var books = {
"Pascal" : [
{ "Name" : "Pascal Made Simple", "price" : 700 },
{ "Name" : "Guide to Pascal", "price" : 400 }
],
"Scala" : [
{ "Name" : "Scala for the Impatient", "price" : 1000 },
{ "Name" : "Scala in Depth", "price" : 1300 }
]
}
var i = 0
document.writeln("<table border='2'><tr>");
for(i=0;i<books.Pascal.length;i++)
{
document.writeln("<td>");
document.writeln("<table border='1' width=100 >");
document.writeln("<tr><td><b>Name</b></td><td width=50>" + books.Pascal[i].Name+"</td></tr>");
document.writeln("<tr><td><b>Price</b></td><td width=50>" + books.Pascal[i].price +"</td></tr>");
document.writeln("</table>");
document.writeln("</td>");
}
document.writeln("</tr></table>");
空格
可以在任意一對符號之間插入。可以添加用來讓代碼更可讀
null
意味著空類型
var i = null;
if(i==1) {
document.write("<h1>value is 1</h1>");
} else {
document.write("<h1>value is null</h1>");
}
JSON 值
包括:數字(整型和浮點型)、字符串、布爾值、數組、對象、null
var i =1;
var j = "sachin";
var k = null;
最後更新:2017-05-17 10:31:16