python - 在 python 中访问 json 列表中的嵌套 json 时出错

标签 python json list

我有这个示例 json 数据,它是来自 POST 请求的响应 - response 是下面示例 的名称>json 数据变量:

{
    "statusCode": "OK",
    "data": [
        {
            "id": -199,
            "result": {
                "title": "test1",
                "group": "test_grp2"
            }
        },
        {
            "id": -201,
            "result": {
                "title": "test2",
                "group": "test_grp2"
            }
        }
    ]
}

现在我想做的是形成一个列表列表,其中每个列表都有idtitlegroup来自上述 json 数据的 值。我的代码如下所示:

def get_list():
    # code to get the response from POST request

    json_data = json.loads(response.text)
    group_list = []

    if json_data['statusCode'] == 'OK':
        for data in json_data['data']:
            print(data)
            for result_data in data['result']:  
                title = result_data['title']
                group = result_data['group']
            group_list.append([data['id'],title,group])

    return(group_list)

当我执行此命令时,我收到错误,因为在 title = result_data['title] 行,列表索引必须是 int 而不是 str。我怎样才能形成上面的列表?

最佳答案

data['result'] 在您的情况下是一个字典。当您使用 for result_data in data['result'] 对其进行迭代时,您将获得键 - 换句话说,result_data 是一个字符串,并且不支持字符串索引.

相反,您的意思是:

for data in json_data['data']:
    result_data = data['result']

    title = result_data['title']
    group = result_data['group']

或者,您也可以使用 list comprehension :

group_list = [(data['id'], data['result']['title'], data['result']['group'])
              for data in json_data['data']]
print(group_list)

关于python - 在 python 中访问 json 列表中的嵌套 json 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45726824/

相关文章:

json - 在 JSON.NET 中反序列化 Jarray

c# - 如何将具有动态值的 javascript 对象发布到 mvc6 Controller 操作

python - 在 python 中 reshape 不规则列表

Java:如何按列表的大小对列表列表进行排序?

java - 将 List 转换为 String 数组时类型不兼容

python - 有人在 Cygwin 上安装 MySQLdb for Python 吗?

python - 在 GIL 之外使用 scipy 例程

将值循环到变量中的 Pythonic 方式

python - 表单处理 - 检测框以分隔部分

javascript - Angular : how to loop through JSON in controller and display in view