You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python解析JSON代码报错:如何提取resourcePermission的permissions字段

解决Python提取JSON中permissions字段的TypeError问题

首先,咱们来拆解你遇到的错误根源:

  • role_list_json是一个列表(对应JSON里的resourcePermission数组),所以直接用role_list_json["permissions"]会触发TypeError——列表只能用整数索引定位元素,不能用字符串。
  • 你的代码里role_list_json["permissions"]["k"]还有两个明显问题:一是变量k不能放在引号里,二是你跳过了列表元素的索引步骤(得先拿到数组里的单个字典条目,才能提取permissions)。

下面是修正后的代码,帮你实现按索引提取permissions并写入worksheet的需求:

import json

# 解析JSON数据(假设response1.text是你的原始响应内容)
role_data = json.loads(response1.text)
# 直接通过key获取resourcePermission列表,比用values()[0]更直观清晰
role_entries = role_data["resourcePermission"]

# 假设你从第0行开始写入表格,可根据实际情况调整
current_row = 0

# 遍历每个权限条目
for entry in role_entries:
    # 取出当前条目的permissions列表
    permissions = entry["permissions"]
    # 从第2列开始写入
    current_col = 2
    
    # 按索引遍历permissions,依次写入单元格
    for idx, perm in enumerate(permissions):
        worksheet.write(current_row, current_col + idx, perm)
    
    # 处理完一个条目,行号+1
    current_row += 1

如果你需要严格按照k[0]=put、k[1]=get、k[2]=delete的形式单独提取(同时避免索引越界,因为有的条目只有get权限),可以用下面的写法做防护:

import json

role_data = json.loads(response1.text)
role_entries = role_data["resourcePermission"]

current_row = 0
for entry in role_entries:
    perms = entry["permissions"]
    # 按索引提取,用None处理权限不足的情况,避免IndexError
    put_perm = perms[0] if len(perms) >= 1 else None
    get_perm = perms[1] if len(perms) >= 2 else None
    delete_perm = perms[2] if len(perms) >= 3 else None
    
    # 写入表格对应列
    worksheet.write(current_row, 2, put_perm)
    worksheet.write(current_row, 3, get_perm)
    worksheet.write(current_row, 4, delete_perm)
    
    current_row += 1

最后补充几个你代码里的关键优化点:

  1. 用role_data["resourcePermission"]替代list(role_data.values())[0]:前者可读性更强,不会因为JSON结构变化导致取值错误。
  2. 替换while k <1的循环逻辑:你需要遍历所有权限条目,用for循环更贴合需求。
  3. 增加索引越界防护:不是所有条目都有3种权限,取索引前判断列表长度,避免崩溃。

内容的提问来源于stack exchange,提问作者A. Datta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:34:43