https://segmentfault.com/a/1190000000668072#articleHeader7
什么是JSON
JSON
:JavaScript 對象表示法(J
avaS
cript O
bject N
otation)。
JSON
的形式是用大括號“{}”
包圍起來的項目列表,每一個項目間用逗號(,)分隔,而項目就是用冒號(:)分隔的屬性名和屬性值。這是典型的字典表示形式,也再次表明javascript
里的對象就是字典結構。不管多么復雜的對象,都可以用一句JSON
代碼來創建並賦值。在JSON
中,名稱/值對 包括字段名稱(在雙引號中),后面寫一個冒號,然后是值
JSON 結構
JSON有兩種結構
json
簡單說就是javascript
中的對象和數組,所以這兩種結構就是對象和數組兩種結構,通過這兩種結構可以表示各種復雜的結構
1、對象:對象在js中表示為“{}”
括起來的內容,數據結構為 {key:value,key:value,...}
的鍵值對的結構,在面向對象的語言中,key為對象的屬性,value為對應的屬性值,所以很容易理解,取值方法為 對象.key
獲取屬性值,這個屬性值的類型可以是 數字、字符串、數組、對象幾種。
2、數組:數組在js中是中括號“[]”
括起來的內容,數據結構為 ["java","javascript","vb",...]
,取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數字、字符串、數組、對象幾種。
經過對象、數組2種結構就可以組合成復雜的數據結構了。
JSON 語法規則
JSON
語法是 JavaScript
對象表示法語法的子集。
數據在名稱/值對中
數據由逗號分隔
花括號保存對象
方括號保存數組
JSON
值可以是:
數字(整數或浮點數)
字符串(在雙引號中)
邏輯值(true 或 false) 數組(在方括號中) 對象(在花括號中) null
除以上6種外,再無其他,沒有像js一樣的undefined、NAN
1) 並列的數據之間用逗號(", ")分隔。 2) 映射用冒號(": ")表示。 3) 並列數據的集合(數組)用方括號("[]")表示。 4) 映射的集合(對象)用大括號("{}")表示。
對象是一套無序的名/值對,一個對象以左邊分支開始,以右邊分支結束
一個值可以是用雙引號括起來的字符串,或者是一個數值,一個true or false
,一個數組或者一個對象
JSON與對象字面量
在編程語言中,字面量是一種表示值的記法。JSON
規定鍵-值對中的鍵
必須用雙引號! 引號。例如:
{"first name" : "Mike"};
在JSON
字符串中,不能使用函數或者正則表達式字面量
數據類型:
從結構上看,所有的數據(data)最終都可以分解成三種類型:
第一種類型是標量(scalar),也就是一個單獨的字符串(string)或數字(numbers),比如"北京"這個單獨的詞。 第二種類型是序列(sequence),也就是若干個相關的數據按照一定順序並列在一起,又叫做數組(array)或列表(List),比如"北京,上海"。 第三種類型是映射(mapping),也就是一個名/值對(Name/value),即數據有一個名稱,還有一個與之相對應的值,這又稱作散列(hash)或字典(dictionary),比如"首都:北京"。
在編程語言中,只要有了數組(array)和對象(object)就能夠儲存一切數據了。
數組和對象的另一個區別是,數組的數據沒有"名稱"(name),對象的數據有"名稱"(name)。
JavaScript
中有5種簡單數據類型(也稱為基本數據類型):Undefined
、Null
、Boolean
、Number
和String
。還有1種復雜數據類型——Object
,Object
本質上是由一組無序的名值對組成的。
對一個值使用typeof
操作符可能返回下列某個字符串:
"undefined"——如果這個值未定義; "boolean"——如果這個值是布爾值; "string"——如果這個值是字符串; "number"——如果這個值是數值; "object"——如果這個值是對象或null; "function"——如果這個值是函數;