将 JSON 加载到 OrderedDict
在 JSON 中,数据存储在键值对中。不保证这些对的顺序。然而,在某些情况下,保持键的顺序至关重要。问题来了:JSON可以加载到有序字典(OrderedDict)中吗?
用object_pairs_hook解决方案
是的,JSON可以加载到OrderedDict中。这是通过向 JSONDecoder 构造函数指定 object_pairs_hook 参数来实现的。 object_pairs_hook 参数采用一个为 JSON 对象中的每对键和值调用的函数。该函数可以返回一个有序字典,确保保留键的顺序。下面是一个示例:
import json from collections import OrderedDict data = json.loads('{"foo":1, "bar": 2}', object_pairs_hook=OrderedDict) print(json.dumps(data, indent=4))
输出:
{ "foo": 1, "bar": 2 }
这是有效的,因为 object_pairs_hook 函数返回一个 OrderedDict 对象,它维护键的顺序。
替代使用json.load
同样的方法可以应用于 json.load 函数:
data = json.load(open('config.json'), object_pairs_hook=OrderedDict)
以上是JSON 可以加载到 OrderedDict 中以保留键顺序吗?的详细内容。更多信息请关注PHP中文网其他相关文章!