python - json.loads() 不保持秩序

标签 python json python-2.7

<分区>

我已将我的字符串格式化为看起来像 JSON,这样我就可以对其执行 json.loads。当我在屏幕上打印时,结果弄乱了顺序。我知道 Python 字典没有排序,但是有什么方法可以保持这个顺序吗?我真的需要保留它。谢谢!

最佳答案

JSON 和 Python 字典(它们是 JSON 对象)都是无序的。所以实际上这样做没有任何意义,因为 JSON 编码器可以改变顺序。

然而,您可以定义自定义 JSON 解码器,然后使用该解码器解析它。所以这里的字典钩子(Hook)将是一个 OrderedDict:

from json import JSONDecoder
from collections import OrderedDict

customdecoder = JSONDecoder(object_pairs_hook=OrderedDict)

然后你可以解码:

customdecoder.decode(your_json_string)

因此,这会将项目存储在 OrderedDict 而不是字典中。但请注意 - 如前所述 - order of the keys of JSON objects is unspecified .

或者,您也可以将钩子(Hook)传递给 loads 函数:

from json import loads
from collections import OrderedDict

loads(your_json_string, object_pairs_hook=OrderedDict)

Update: as of , a dictionary retains insertion order. So if one uses , the standard json.load and json.loads should work fine. Note however that a JSON object is still unordered, so that the JavaScript end can load/dump the object in any order.

关于python - json.loads() 不保持秩序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47111058/

相关文章:

python - 打印矩阵的元素,每行另起一行,每行元素之间用空格分隔

python - Keras 显示来自数据生成器的图像

java - 如何从服务器向客户端发送数据

python - 使用 Scrapy 在 Craigslist 上进行递归抓取

python - 隐藏/保护 Python 代码

python matplotlib条形图添加条形标题

python - 内部列表中的第一项尽可能高效

python - 如何使用 Outlook 2010(无 smtp)和 python 发送带有嵌入图像(不是附件)的 HTML 格式电子邮件

json - 当值未命名时将 json 值检索到列中

php - json_encode "not working"正确吗?