一、什麼是json? json的全稱為:JavaScript Object Notation,是一種輕量級的數據交互格式。它基於 ECMAScript (歐洲電腦協會制定的js規範)的一個子集,採用完全獨立於編程語言的文本格式來存儲和表示數據。【以上來自於百度百科】 簡單來說:json就是一種在各 ...
一、什麼是json?
json的全稱為:JavaScript Object Notation,是一種輕量級的數據交互格式。它基於 ECMAScript (歐洲電腦協會制定的js規範)的一個子集,採用完全獨立於編程語言的文本格式來存儲和表示數據。【以上來自於百度百科】
簡單來說:json就是一種在各個編程語言中流通的數據格式,負責不同編程語言中的數據傳遞和交互。
類似於:
- 國際通用語言-英語
- 中國56個民族不同地區的通用語言-普通話。
但真要說json到底是什麼,以及json的作用,我們總是難以描述,下麵我將從各個方面來進行說明:
二、與javascript的關係
相信很多程式員只要一提到json總會想到js,因為json不僅含有js的名字,其格式也與js中對象(object)的格式並無一二。
這裡我們要進行一個說明,首先json是基於ECMAScript語法,但這並不意味著json必須在js中使用,或者必須要產生什麼聯繫,json在js中的處理也並沒有比其他語言占有更多優勢。只是因為語法相似,而使得js開發者能更快的上手json而已。
事實上幾乎所有編程語言中都有對json數據轉換的支持:
js中,json與對象的轉換:JSON.parse()
/JSON.stringify()
;
php中,json與數組的轉換:json_encode()
/json_decode()
;
java中,json與對象的轉換:fromJson()
/toJson()
;
python中,json與對象的轉換:json.dumps()
/json.loads()
;
三、語法格式
那麼json的語法格式到底是怎樣的呢?我們先來看一段json數據:
{"name":"admin","age":18}
這就是一種最簡單的json,如果有學過js的開發者是不是發現json的語法與js中object的語法幾乎相同。
但是,註意:
- json是一種純字元數據,不屬於編程語言
- json的語法與js中object的語法幾乎一致(下一部分說明不同)
- json數據以鍵值對形式存在,多個鍵值對之間用逗號
,
隔開,鍵值對的鍵和值之間用冒號:
連接 - json數據在js對象的基礎上做了嚴格化
- json數據中的鍵值對可以使用編程語言中所謂的關鍵字(*見註意事項)
- json的數據可以用花括弧
{}
或中括弧[]
包裹,對應js中的object和array
四、註意事項
為什麼說幾乎相同,而不是完全相同呢?接下來我們要說的就是json與js中對象的不同點,也是json嚴格要求的部分:
- json的鍵值對的鍵部分,必須用雙引號
"
包裹,單引號都不行(所以如果在鍵中出現了關鍵字,也被字元化了),而js中對象沒有強制要求(所以在鍵中不允許出現關鍵字) - json的鍵值對的值部分,不允許出現函數
function
,undefined
,NaN
,但是可以有null
,js中對象的值中可以出現 - json數據結束後,不允許出現沒有意義的逗號
,
如:{"name":"admin","age":18,}
,註意看數據結尾部分18的後面的逗號,不允許出現
五、總結
所以,json數據的格式可以是:
{"name":"admin","age":18}
也可以是:
["hello",3.1415,"json"]
還可以是:
[{"name":"admin","age":18},{"name":"root","age":16},{"name":"張三","age":20}]
不能是:(key沒有雙引號)
{"name":"admin",age:18}
不能是:(無意義的逗號)
{"name":"admin","age":18,}
不能是:(不允許出現函數)
{"name":"admin","age":18,"show":function()()}
不能是:(不允許出現undefined)
{"name":"admin","age":18,"show":undefined}
不能是:(不允許出現NaN)
{"name":"admin","age":18,"strong":NaN}
不能是:(無意義的逗號)
["hello",3.1415,"json",]
不能是:(無意義的逗號)
[{"name":"admin","age":18},{"name":"root","age":16},{"name":"張三","age":20},]
以上內容,希望能對以後使用json有所幫助
其實作為通用數據,xml也是一種不錯的選擇,但是隨著json的出現,xml的使用場景正慢慢被json蠶食,相對來說json在某些方面下的體現還是比xml稍具優勢,後期可再開一篇文檔說明json和xml的區別。