【问题标题】:Getting keys of nested json string in python在python中获取嵌套json字符串的键
【发布时间】:2016-03-02 16:09:55
【问题描述】:
{
"id": "0001",
"type": "donut",
"name": "Cake",
"ppu": 0.55,
"batters":
    {
        "batter":
            [
                { "id": "1001", "type": "Regular" },
                { "id": "1002", "type": "Chocolate" },
                { "id": "1003", "type": "Blueberry" },
                { "id": "1004", "type": "Devil's Food" }
            ]
    },
"topping":
    [
        { "id": "5001", "type": "None" },
        { "id": "5002", "type": "Glazed" },
        { "id": "5005", "type": "Sugar" },
        { "id": "5007", "type": "Powdered Sugar" },
        { "id": "5006", "type": "Chocolate with Sprinkles" },
        { "id": "5003", "type": "Chocolate" },
        { "id": "5004", "type": "Maple" }
    ]

}

Concider 上面的 json 字符串,我想从这个 json 字符串中获取所有具有适当层次结构的键,例如

id , 类型, 姓名, ppu, 击球手,

然后在击球手中: 面糊, 打顶

在连击中:id,类型

在顶部:id,类型

我正在使用python,有什么办法可以达到目的吗?

【问题讨论】:

  • 如果这是一个字符串,则使用data = json.loads(string)将其转换为对象,然后使用data["id"]data["batters"]["batter"][0]["id"]等。
  • 我需要通用代码来获取任何 json 的键,这只是一个示例
  • data.keys() 给你id , type, name, ppu, batters, topping 然后你必须检查data["id"]data["type"] 等的类型 - 如果它是字典那么你必须得到(例如)data["batters"].keys() 和再次检查类型。如果是列表,则必须检查 data["topping"][0]data["topping"][1] 等的类型。
  • 感谢哥们,它工作得很好:-) 现在我正在尝试构建一个通用递归函数或一些嵌套的 for 循环来输出每个嵌套级别的键,你能帮帮我吗?我无法完成 3 层或更多嵌套的工作

标签: python json key


【解决方案1】:

如果这是一个字符串,请尝试:

import json
json.loads(your_variable)

如果这是一个字典,则将其解析为字符串并使用上面的方法。

【讨论】:

  • 如果你把它分配给变量,只需通过变量[key]访问。
猜你喜欢
  • 2016-04-30
  • 2022-07-07
  • 2022-01-24
  • 1970-01-01
  • 2017-10-25
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多