在Python的STL使用JSON播放和想出了這個..如何JSON確定寫入/輸出順序
import json as j
cred = j.dumps({'Name': 'John Doe', 'Occupation': 'Programmer'},
sort_keys = True,
indent = 4,
separators = (',', ': '))
_f = open('credentials', 'w')
_f.write(cred)
_f.close()
輸出低於所有的罰款..
{
"Name": "John Doe", "Occupation": "Programmer"
}
然而,我不小心在小寫輸入名稱這樣的..
cred = j.dumps({'name': 'John Doe', 'Occupation': 'Programmer'},
sort_keys = True,
indent = 4,
separators = (',', ': '))
,結果是這樣的..
{
"Occupation": "Programmer", "name": "John Doe"
}
json如何確定傳遞給它的值的寫入/輸出順序,大寫字母的優先級大於小寫字母還是反之亦然,並且有沒有辦法保存順序?
我沒有看過源代碼,但我假設它根據ASCII碼進行排序。 [鏈接。](http://www.asciitable.com/index/asciifull.gif)你會注意到O是79,但是n是110. –
這是一個無效的假設。該命令基於散列函數,它是與隨機數生成相關的函數。它基本上是隨機的。 – Keith
@凱斯廢話。散列表中的順序是非確定性的。這幾乎,但不完全不像隨機順序。儘管最近的CPython版本實際上增加了一些「隨機化」,除非明確禁用(爲了防範DOS類攻擊),但這並不能使這兩個概念相關。這與RNGs有什麼關係?沒有我知道的散列函數與這些有關。 – delnan