首页 >后端开发 >Python教程 >JSON 数据可以加载到 OrderedDict 中,保持键顺序吗?

JSON 数据可以加载到 OrderedDict 中,保持键顺序吗?

Barbara Streisand
Barbara Streisand原创
2024-12-06 01:48:10164浏览

Can JSON Data Be Loaded into an OrderedDict, Maintaining Key Order?

将 JSON 加载到 OrderedDict

问题:

是否可以将 JSON 数据加载到 OrderedDict,保留的原始订单键?

答案:

是的,可以使用 JSONDecoder 类的 object_pairs_hook 参数将 JSON 加载到 OrderedDict 中。此参数指定要调用的函数,以从解码的 JSON 数据构造对象。

通过传递 collections.OrderedDict 作为 object_pairs_hook 参数,您可以确保生成的对象是 OrderedDict,保留对象的顺序JSON 数据中的键。

以下是如何使用此参数json.JSONDecoder:

decoder = json.JSONDecoder(object_pairs_hook=collections.OrderedDict)
data = decoder.decode('{"foo":1, "bar": 2}')
print(data)

这将输出一个 OrderedDict,其键的顺序与 JSON 数据中出现的顺序相同:

OrderedDict([('foo', 1), ('bar', 2)])

您也可以将此参数与 json 一起使用.loads 可以达到同样的效果:

import json
from collections import OrderedDict

data = json.loads('{"foo":1, "bar": 2}', object_pairs_hook=OrderedDict)
print(data)

最后,你可以将此参数与 json.load 一起使用来加载数据从文件到 OrderedDict:

data = json.load(open('config.json'), object_pairs_hook=OrderedDict)

以上是JSON 数据可以加载到 OrderedDict 中,保持键顺序吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn