【发布时间】: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 层或更多嵌套的工作