Parsing nested JSON response Python
本问题已经有最佳答案,请猛点这里访问。
我整个周末都在忙这个,有人能帮我吗?
我正试图解析一个嵌套的JSON响应。我似乎不能返回我需要的值,我只是得到关于"字符串索引必须是整数"的错误每当我试图分析它…
我试图实现的是:对于JSON中的每个对象,提取可用的项目,然后从每个项目中提取可用的模型。例如,第一个应该是:Model001,Model_-090552。
JSON响应示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | { "available_projects": { "model001": { "available_models": [ "model_20171004-090552" ], "status":"ready" }, "model002": { "available_models": [ "model_20171013-143108" ], "status":"ready" }, "model002b": { "available_models": [ "model_20171013-151458" ], "status":"ready" } } |
我的代码:
1 2 3 4 5 6 7 | myText = requests.get('http://localhost:5000/status') jsonresponse = json.loads(myText.text) for element in jsonresponse[u'available_projects']: for AM in element[u'available_models']: ## this gives me the errors.. print AM |
如果我只做一个"for element in jsonresponse[u'available_projects']:print element"语句,它会正确地打印可用的_projects列表。如何使用该输出深入研究JSON?
任何帮助,或者一个代码片段都将是惊人的-谢谢!!
可以使用dictionary对象中的keys方法获取键,然后迭代以获取所需的值。
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | d = { "available_projects": { "model001": { "available_models": [ "model_20171004-090552" ], "status":"ready" }, "model002": { "available_models": [ "model_20171013-143108" ], "status":"ready" }, "model002b": { "available_models": [ "model_20171013-151458" ], "status":"ready" } } } for i in d["available_projects"].keys(): print i,"=" , d["available_projects"][i]['available_models'][0] |
输出:
1 2 3 | model001 = model_20171004-090552 model002b = model_20171013-151458 model002 = model_20171013-143108 |