Json 到 Python 中的 OrderedDict

Json to OrderedDict in Python

每当我尝试将 json 解析为 OrderedDict 时,它最终的顺序与 json 的顺序不同。我这样试:

from collections import OrderedDict    
data = OrderedDict(json.loads(resp.read().decode("utf-8")), object_pairs_hook=OrderedDict)

我是不是做错了什么,如果是,我能做些什么来解决它,或者在 python 中是不可能的?

我见过 object_pairs_hook=collections.OrderedDict 之类的东西,但它甚至无法正确执行。它无法解析引用。

您的关键字参数位置错误,如果我们添加更多空格可能会更清楚:

data = OrderedDict(
    json.loads(
        resp.read().decode("utf-8")  # one argument to json.loads
    ), 
    object_pairs_hook=OrderedDict  # second argument to OrderedDict
)

OrderedDict 没有这样的参数 - 你打算将它传递给 json.loads,那么你不需要重新创建它:

data = json.loads(
    resp.read().decode("utf-8"), 
    object_pairs_hook=OrderedDict
)

您在遗漏 object_pairs_hook 时看不到所需顺序的原因是 json.loads 正在创建普通的无序字典 then 将其转换为 OrderedDict.