胡說叔叔
2018-08-10 11:10:39
在python中,字典的key可以是任意immutable對象,但json的key卻只能是string。在stackoverflow上搜到的相關(guān)問題,Why JSON allows only string to be a key?最佳答案是說json是為了數(shù)據(jù)在不同程序之間相互傳遞,所以string能保證不同的程序語言都能支持這種數(shù)據(jù)結(jié)構(gòu)。但我還是不明白為什么int、float之類的不行。json.dumps({1:1,2:2})'{"1": 1, "2": 2}
1 回答

FFIVE
TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊
首先JSON是Javascript的子集,而在Javascript中只有字符串、整型等5個數(shù)據(jù)類型,而后在其他編程語言中被使用,其他的語言的實現(xiàn)都是為了兼容JSON,比如Python標(biāo)準(zhǔn)庫的json模塊。詳情可以查看json
至于JSON中為什么采用字符串作為鍵主要在于,首先需要是1個不可變的對象,因此只能是字符串、整型、浮點(diǎn)型這樣的數(shù)據(jù)類型了,而在計算機(jī)中1個整型需要占用4個字節(jié)的內(nèi)存,而字符只占用1個字節(jié)。
另外,使用JSON主要是為了傳輸數(shù)據(jù),這個網(wǎng)絡(luò)傳輸?shù)倪^程中會丟失精度也是需要考慮的,而整型和浮點(diǎn)數(shù)都會出現(xiàn)精度的丟失。
另外使用字符串的形式還可以使用壓縮算法進(jìn)行壓縮,進(jìn)而節(jié)省帶寬。
因此字符串是最佳的選擇。
添加回答
舉報
0/150
提交
取消