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

Python3.9无法获取JSON值,报错'string indices must be integers'求助

问题分析与解决方案

问题根源

value1是JSON格式的字符串,而非Python字典对象。Python中字符串仅支持整数类型的索引(例如value1[0]获取第一个字符),使用字符串键["mail"]访问自然会触发TypeError: 'string indices must be integers'错误。

解决步骤

你需要先将JSON字符串解析为Python可直接操作的字典,使用标准库json的loads()方法即可完成转换:

修正前代码(报错)

def lambda_handler(event, context):
    value1 = '{"mail": "user@example.com", "name": "Test User"}'
    print(value1["mail"])  # 触发TypeError

修正后代码(正常运行)

import json

def lambda_handler(event, context):
    value1 = '{"mail": "user@example.com", "name": "Test User"}'
    # 将JSON字符串解析为Python字典
    value1_dict = json.loads(value1)
    print(value1_dict["mail"])  # 输出: user@example.com

额外注意事项

如果JSON字符串格式不合法(比如缺少引号、括号不匹配),json.loads()会抛出JSONDecodeError;如果目标键mail不存在,会抛出KeyError。可以添加异常处理增强代码健壮性:

import json

def lambda_handler(event, context):
    value1 = '{"mail": "user@example.com", "name": "Test User"}'
    try:
        value1_dict = json.loads(value1)
        print(value1_dict["mail"])
    except json.JSONDecodeError as e:
        print(f"JSON解析失败: {str(e)}")
    except KeyError:
        print("键'mail'不存在")

内容的提问来源于stack exchange,提问作者eng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:45:41