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
.
每当我尝试将 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
.