來源:https://baike.baidu.com/item/JSON/2462549?fr=aladdinjavascript
JSON(JavaScript Object Notation, JS 對象標記) 是一種輕量級的數據交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用徹底獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提高網絡傳輸效率。java
JSON 語法
JSON 語法規則
在 JS 語言中,一切都是對象。所以,任何支持的類型均可以經過 JSON 來表示,例如字符串、數字、對象、數組等。可是對象和數組是比較特殊且經常使用的兩種類型:
-
對象表示爲鍵值對
-
數據由逗號分隔
-
花括號保存對象
-
方括號保存數組
JSON 鍵/值對
JSON 鍵值對是用來保存 JS 對象的一種方式,和 JS 對象的寫法也大同小異,鍵/值對組合中的鍵名寫在前面並用雙引號 "" 包裹,使用冒號 : 分隔,而後緊接着值:
這很容易理解,等價於這條 JavaScript 語句:
JSON 與 JS 對象的關係
不少人搞不清楚 JSON 和 Js 對象的關係,甚至連誰是誰都不清楚。其實,能夠這麼理解:
JSON 是 JS 對象的字符串表示法,它使用文本表示一個 JS 對象的信息,本質是一個字符串。
如
1 var obj = {a: 'Hello', b: 'World'}; //這是一個對象,注意鍵名也是可使用引號包裹的
2 var json = '{"a": "Hello", "b": "World"}'; //這是一個 JSON 字符串,本質是一個字符串
JSON 和 JS 對象互轉
要實現從對象轉換爲 JSON 字符串,使用 JSON.stringify() 方法:
1 var json = JSON.stringify({a: 'Hello', b: 'World'}); //結果是 '{"a": "Hello", "b": "World"}'
要實現從 JSON 轉換爲對象,使用 JSON.parse() 方法:編程
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //結果是 {a: 'Hello', b: 'World'}
在 JS 語言中,一切都是對象。所以,任何支持的類型均可以經過 JSON 來表示,例如字符串、數字、對象、數組等。可是對象和數組是比較特殊且經常使用的兩種類型。
對象:對象在 JS 中是使用花括號包裹 {} 起來的內容,數據結構爲 {key1:value1, key2:value2, ...} 的鍵值對結構。在面向對象的語言中,key 爲對象的屬性,value 爲對應的值。鍵名可使用整數和字符串來表示。值的類型能夠是任意類型。
數組:數組在 JS 中是方括號 [] 包裹起來的內容,數據結構爲 ["java", "javascript", "vb", ...] 的索引結構。在 JS 中,數組是一種比較特殊的數據類型,它也能夠像對象那樣使用鍵值對,但仍是索引使用得多。一樣,值的類型能夠是任意類型。
簡單地說
[1],JSON 能夠將 JavaScript 對象中表示的一組數據轉換爲字符串,而後就能夠在網絡或者程序之間輕鬆地傳遞這個字符串,並在須要的時候將它還原爲各編程語言所支持的數據格式,例如在 PHP 中,能夠將 JSON 還原爲數組或者一個基本對象。在用到AJAX時,若是須要用到數組傳值,這時就須要用JSON將數組轉化爲字符串。
表示對象
JSON最經常使用的格式是對象的 鍵值對。例以下面這樣:
{"firstName": "Brett", "lastName": "McLaughlin"}
表示數組
和普通的 JS 數組同樣,JSON 表示數組的方式也是使用方括號 []。
{
"people":[
{
"firstName": "Brett",
"lastName":"McLaughlin"
},
{
"firstName":"Jason",
"lastName":"Hunter"
}
]
}
這不難理解。在這個示例中,只有一個名爲 people的變量,值是包含兩個條目的數組,每一個條目是一我的的記錄,其中包含名和姓。上面的示例演示如何用括號將記錄組合成一個值。固然,可使用相同的語法表示更過多的值(每一個值包含多個記錄)。
在處理 JSON 格式的數據時,沒有須要遵照的預約義的約束。因此,在一樣的數據結構中,能夠改變表示數據的方式,也可使用不一樣方式表示同一事物。
如前面所說,除了對象和數組,你也能夠簡單地使用字符串或者數字等來存儲簡單的數據,但這樣並無多大意義。