我对python中的JSON有问题。
实际上,如果我尝试执行这段代码,python会给我一个排序后的JSON字符串!
例如:
values = {
'profile': 'testprofile',
'format': 'RSA_RC4_Sealed',
'enc_key': base64.b64encode(chiave_da_inviare),
'request': base64.b64encode(data)
}
values_json = json.dumps(values, sort_keys = False, separators = (',', ':'))
这是输出:
{
"profile": "testprofile",
"enc_key": "GBWo[...]NV6w==",
"request": "TFl[...]uYw==",
"format": "RSA_RC4_Sealed"
}
如你所见,我试图使用“sort_keys=False”,但没有改变。
如何停止Python对JSON字符串进行排序?
其他地方讨论过的OrderedDict是解决问题的主要方法,而ObjDict可能更好。
但是,如果需要在加载时维护顺序,则还需要json.loads()将值加载到OrderedDict中。做这个用途
否则,即使json文件是有序的,加载时该顺序也将丢失。
或许更好的解决方案是使用“ObjDict”代替orderedict。 这需要pip安装objdict。ObjDict仍然像orderedict一样维护订单,但也带来了JSON支持和对本例的更好处理。
您正在将值存储到Python^{} 中,Python根本没有内在的排序概念,它只是一个键到值的映射。因此,当您将项目放入
values
变量时,它们将失去所有顺序。事实上,获得确定性排序的唯一方法是使用
sort_keys=True
,我假设将它们放在字母数字排序中。为什么订单这么重要?从标准库尝试^{} :
不幸的是,这个特性是
New in version 2.7
对于collections
相关问题 更多 >
编程相关推荐