Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析嵌套JSON响应Python_Python_Json_Parsing_Nested - Fatal编程技术网

解析嵌套JSON响应Python

解析嵌套JSON响应Python,python,json,parsing,nested,Python,Json,Parsing,Nested,我整个周末都在忙这个,有人能帮我吗 我试图解析一个嵌套的JSON响应。我似乎无法返回我需要的值,每当我试图解析它时,我只会得到关于“字符串索引必须是整数”的错误 我试图实现的是:对于JSON中的每个对象,提取可用的\u项目,然后从每个项目中提取可用的\u模型。例如,第一个应该是:model001,model_20171004-090552 JSON响应示例: { "available_projects": { "model001": { "avai

我整个周末都在忙这个,有人能帮我吗

我试图解析一个嵌套的JSON响应。我似乎无法返回我需要的值,每当我试图解析它时,我只会得到关于“字符串索引必须是整数”的错误

我试图实现的是:对于JSON中的每个对象,提取可用的\u项目,然后从每个项目中提取可用的\u模型。例如,第一个应该是:model001,model_20171004-090552

JSON响应示例:

{
    "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"
        }
}
我的代码:

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
如果我只执行一个“jsonresponse[u'available_projects']:print element”语句中的for元素,它将正确地打印可用_projects列表。如何使用该输出来深入研究JSON

任何帮助,或者一段代码片段都会非常棒-谢谢

您可以使用dictionary对象中的获取键,然后迭代以获取所需的值

示例:

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]
model001 = model_20171004-090552
model002b = model_20171013-151458
model002 = model_20171013-143108
输出:

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]
model001 = model_20171004-090552
model002b = model_20171013-151458
model002 = model_20171013-143108

当您在jsonresponse[u'available_projects']中对元素执行
操作时:
您正在迭代dict的键(即
元素
是一个字符串)。你想迭代dict的值。Rakesh!你的传奇:)这工作得很好-非常感谢你。我一直在拼命想让它工作:)