解析嵌套的JSON响应python

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