Json到Python中的OrderedDict

时间:2016-03-08 13:33:20

标签: python python-3.x ordereddictionary

每当我尝试将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这样的东西但是甚至没有正确执行。它无法解决参考。

1 个答案:

答案 0 :(得分:5)

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

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正在创建一个无序的,无序的字典然后转换它到OrderedDict