Json到Python中的OrderedDict

Fal*_*man 2 python ordereddictionary python-3.x

每当我尝试将json解析为OrderedDict时,它的结果顺序与json不同.我试试这样:

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

我做错了什么,如果是的话,我该怎么做才能修复它,或者在python中它是不可能的?

我已经看到了类似的东西object_pairs_hook=collections.OrderedDict但是甚至没有正确执行.它无法解决参考.

jon*_*rpe 5

你有一个关键字参数在错误的地方,如果我们添加更多的空格可能会更清楚:

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

OrderedDict没有这样的论点 - 你打算把它传递给json.loads,然后你不需要重新创建它:

data = json.loads(
    resp.read().decode("utf-8"), 
    object_pairs_hook=OrderedDict
)
Run Code Online (Sandbox Code Playgroud)

当你离开了,你没有看到你想要的顺序的原因object_pairs_hook是,json.loads正在创建一个香草,无序的字典然后将其转换为OrderedDict.