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

Python JSON解析报错求助:处理URL读取的JSON值前缀判断问题

问题分析与解决办法

嘿,我一眼就瞅出你代码报错的原因啦!你拿到的data是个字典对象(就像你给的示例{ "Id": "1234", "something": "{...}" }),但你用for x in data循环的时候,x取到的其实是字典的键名(比如字符串"Id"、"something"),字符串哪有get()方法呀?这就是报错的核心问题~

针对单个JSON对象的正确写法

如果你的接口返回的就是单个这样的字典(不是列表),根本不需要循环,直接判断字段值就行:

import urllib
import json

response = urllib.urlopen(url)
data = json.loads(response.read())

id_list = []
# 用get方法避免KeyError,默认空字符串防止报错
if data.get("something", "").startswith('{'):
    id_list.append(data["Id"])

针对多个JSON对象组成的列表的写法

如果你的实际场景是接口返回了一个包含多个这类对象的列表(比如[{"Id": "1234", ...}, {"Id": "5678", ...}]),那你要循环的是这个列表,而不是单个字典:

import urllib
import json

response = urllib.urlopen(url)
# 这里data是列表类型
data = json.loads(response.read())

id_list = []
for item in data:
    # 同样用get做安全处理
    if item.get("something", "").startswith('{'):
        id_list.append(item["Id"])

额外小提示

用data.get("something", "")而不是直接data["something"],是为了防止某个数据里没有"something"这个字段时,代码不会抛出KeyError异常,空字符串调用startswith('{')会返回False,逻辑更健壮~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:12:52