一、什么是json
什么是json
json的全稱(chēng)為:JavaScript Object Notation,是一種輕量級(jí)的數(shù)據(jù)交互格式。它基于 ECMAScript (歐洲計(jì)算機(jī)協(xié)會(huì)制定的js規(guī)范)的一個(gè)子集,采用完全獨(dú)立于編程語(yǔ)言的文本格式來(lái)存儲(chǔ)和表示數(shù)據(jù)。簡(jiǎn)單來(lái)說(shuō):json就是一種在各個(gè)編程語(yǔ)言中流通的數(shù)據(jù)格式,負(fù)責(zé)不同編程語(yǔ)言中的數(shù)據(jù)傳遞和交互。
類(lèi)似于:
與javascript的關(guān)系
相信很多程序員只要一提到j(luò)son總會(huì)想到j(luò)s,因?yàn)閖son不僅含有js的名字,其格式也與js中對(duì)象(object)的格式并無(wú)一二。
這里我們要進(jìn)行一個(gè)說(shuō)明,首先json是基于ECMAScript語(yǔ)法,但這并不意味著json必須在js中使用,或者必須要產(chǎn)生什么聯(lián)系,json在js中的處理也并沒(méi)有比其他語(yǔ)言占有更多優(yōu)勢(shì)。只是因?yàn)檎Z(yǔ)法相似,而使得js開(kāi)發(fā)者能更快的上手json而已。
事實(shí)上幾乎所有編程語(yǔ)言中都有對(duì)json數(shù)據(jù)轉(zhuǎn)換的支持:
js中,json與對(duì)象的轉(zhuǎn)換:JSON.parse()/JSON.stringify();
php中,json與數(shù)組的轉(zhuǎn)換:json_encode()/json_decode();
java中,json與對(duì)象的轉(zhuǎn)換:fromJson()/toJson();
python中,json與對(duì)象的轉(zhuǎn)換:json.dumps()/json.loads();
延伸閱讀:
二、json注意事項(xiàng)
為什么說(shuō)幾乎相同,而不是完全相同呢?接下來(lái)我們要說(shuō)的就是json與js中對(duì)象的不同點(diǎn),也是json嚴(yán)格要求的部分:
json的鍵值對(duì)的鍵部分,必須用雙引號(hào)”包裹,單引號(hào)都不行(所以如果在鍵中出現(xiàn)了關(guān)鍵字,也被字符化了),而js中對(duì)象沒(méi)有強(qiáng)制要求(所以在鍵中不允許出現(xiàn)關(guān)鍵字)json的鍵值對(duì)的值部分,不允許出現(xiàn)函數(shù)function,undefined,NaN,但是可以有null,js中對(duì)象的值中可以出現(xiàn)json數(shù)據(jù)結(jié)束后,不允許出現(xiàn)沒(méi)有意義的逗號(hào),如:{“name”:”admin”,”age”:18,},注意看數(shù)據(jù)結(jié)尾部分18的后面的逗號(hào),不允許出現(xiàn)