【问题标题】:Parse an embedded object (JSON) into an ordered dictionary in Python在 Python 中将嵌入对象 (JSON) 解析为有序字典
【发布时间】:2019-10-22 03:51:39
【问题描述】:

我希望将一些 JSON 解析成字典,但需要保留字典特定部分的顺序。

我知道我可以将整个 JSON 文件解析为有序字典(例如 Can I get JSON to load into an OrderedDict?),但这并不是我想要的。

{
    "foo": "bar",
    "columns":
    {
        "col_1": [],
        "col_2": []
    }
}

在此示例中,我希望将整个文件解析为字典,其中“列”部分为OrderedDict。是否有可能使用 JSON 解析工具获得这种粒度,同时保证始终保留顺序?谢谢!

【问题讨论】:

  • 不知道为什么你不希望完整的结果是 OrderedDict,但如果你不太关心效率,你总是可以这样做:dict(json.loads("YOUR INPUT", object_pairs_hook=OrderedDict)) :-)
  • @BartVanLoon 谢谢!我可能对整个事情都很好OrderedDict。这会保证columns 的顺序,还是最终会成为一个OrderedDict 和一个无序字典columns 的孩子?如果这有意义的话。
  • 不,它会一直是 OrderedDict
  • @BartVanLoon 感谢所有帮助!很棒的信息。我对 Python 有点陌生,所以感谢您的耐心等待 :)

标签: python json dictionary ordereddictionary


【解决方案1】:

同时,从 cmets 中,我收集到一个完整的嵌套 OrderedDict 也可以,但这也可能是一个解决方案,如果您不介意使用有关列名称的一些知识:

import json
from collections import OrderedDict

def hook(partialjson):
    if "col_1" in partialjson:
        return OrderedDict(partialjson)
    return dict(partialjson)

result = json.loads("YOUR JSON STRING", object_hook=hook)

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 2019-01-18
    • 1970-01-01
    相关资源
    最近更新 更多