【问题标题】:Json to OrderedDict in PythonPython 中的 JSON 到 OrderedDict
【发布时间】:2016-03-08 13:33:19
【问题描述】:

每当我尝试将 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 这样的东西,但它甚至不能正确执行。它无法解决引用。

【问题讨论】:

    标签: python python-3.x ordereddictionary


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-24
      • 2012-05-16
      • 2011-10-18
      • 2014-01-25
      • 2015-09-07
      • 2013-05-09
      • 2016-04-20
      • 2019-09-19
      相关资源
      最近更新 更多