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