无法访问嵌套JSON的city属性,请求技术排查
嵌套JSON中'city'属性访问失败的解决方案
问题根源
报错TypeError: string indices must be integers, not 'str'的本质是:你尝试用字符串索引访问一个字符串类型的值,而非预期的字典。从你提供的JSON结构和代码来看,data["props"]["pageProps"]["componentProps"]["gdpClientCache"]下目标键对应的内容是未解析的JSON格式字符串,不是已经转成Python字典的对象,直接用[key]['property']['city']自然会报错。
解决方法
1. 验证数据类型
先执行以下代码确认数据类型:
print(type(data["props"]["pageProps"]["componentProps"]["gdpClientCache"][key]))
输出会是<class 'str'>,证明这是字符串而非字典。
2. 解析JSON字符串
使用Python内置的json模块,将该字符串解析为字典后再访问嵌套属性。修正后的完整代码:
import json # 注意:key里的转义符不需要保留,直接用原始键字符串 key = 'ForSaleShopperPlatformFullRenderQuery{"zpid":28657235,"platform":"DESKTOP_WEB","formType":"OPAQUE","contactFormRenderParameter":{"zpid":28657235,"platform":"desktop","isDoubleScroll":true},"skipCFRD":false,"ompPlatform":"web"}' # 取出JSON字符串并解析 raw_cache_str = data["props"]["pageProps"]["componentProps"]["gdpClientCache"][key] parsed_cache_dict = json.loads(raw_cache_str) # 正常访问city属性 city = parsed_cache_dict['property']['city'] print(city) # 输出: Boerne
额外提示
- 键字符串无需添加转义符:Python单引号包裹的字符串中,双引号可以直接使用,不需要转义,避免因转义符错误导致键不匹配。
- 确保JSON字符串合法:如果解析时抛出
JSONDecodeError,检查原始字符串是否存在语法错误(比如你提供的JSON片段末尾不完整,实际数据需要是完整合法的JSON结构)。
内容的提问来源于stack exchange,提问作者Saad Ouled Lafqui
相关产品推荐
相关产品推荐

