Python遍历JSON数据异常:返回单个字符,访问users键报错
解决Artblocks artists.json数据解析问题
问题根源
data['pageProps']['urqlState']['3369789927']['data'] 这个字段本质是JSON格式的字符串,不是已经解析好的字典对象。你打印时看到的是JSON结构,但Python还没把它转换成可直接操作的字典,所以用['users']这种字典索引访问时,会触发string indices must be integers的错误——因为字符串只能用整数下标取单个字符。
解决步骤
直接对这个嵌套的JSON字符串做二次解析,把它转成字典后再操作:
示例代码
import json import requests # 获取数据并保存 resp = requests.get("https://artblocks.io/artists.json") raw_data = resp.json() with open("artists_data.json", "w") as f: json.dump(raw_data, f) # 加载保存的数据 with open("artists_data.json", "r") as f: loaded_data = json.load(f) # 处理嵌套的JSON字符串 target_json_str = loaded_data['pageProps']['urqlState']['3369789927']['data'] # 二次解析成字典 target_dict = json.loads(target_json_str) # 现在可以正常访问users字段了 for user in target_dict['users']: print(user['name']) # 示例:打印艺术家名字
额外提示
- 如果解析时报错,先打印
target_json_str看看有没有格式问题(比如多余的转义字符) - 如果
3369789927这个键是动态变化的,可以遍历urqlState的所有键,找到包含data字段的项再处理
内容的提问来源于stack exchange,提问作者orange2piece
相关产品推荐
相关产品推荐

