Python访问嵌套字典key报string indices must be integers错误如何解决
报错原因
- 你加载得到的
data中,键b对应的值是JSON格式的字符串,而非嵌套字典。json.load()只完成了外层JSON的解析,data['b']仍然为字符串类型,字符串仅支持整数作为下标取值,直接用键date1访问自然触发类型错误。
修复方法
对data['b']单独执行一次JSON反序列化即可,修正后的代码如下:
import json # 注意:原代码中open的文件名是字符串类型,需要加引号包裹 jsonfile = open("file.json", "r") data = json.load(jsonfile) jsonfile.close() # 解析b对应的JSON字符串为字典 b_content = json.loads(data['b']) date = b_content['date1']
如果要从根源避免该问题,生成原始JSON文件时,不要把b对应的字典转成字符串再存入,直接作为嵌套对象写入即可,后续只需一次json.load就能解析出完整的嵌套字典结构。
内容的提问来源于stack exchange,提问作者viki
相关产品推荐
相关产品推荐

