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

无法访问嵌套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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:44:57