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

Python requests遇JSONDecodeError:含斜杠SKU参数路径拆分问题

问题原因

你遇到的JSONDecodeError本质是URL路径中的特殊字符未做编码处理:
当sku值RFBB5-56C40K2/32直接拼接到URL后,其中的/会被HTTP服务器识别为路径分隔符,导致实际请求的URL路径被解析为/xxx/items/RFBB5-56C40K2/32——服务器会把32当作新的子路径,而非sku的一部分。这种情况下服务器返回的不是预期的JSON数据(大概率是404错误页面或非JSON格式的错误响应),所以调用.json()时会触发解码失败。

解决方法

核心思路是对包含特殊字符的sku进行URL编码,把/这类特殊字符转换为URL安全的编码格式(比如/会被转成%2F),让服务器将整个sku识别为单个路径段。

方法1:使用urllib.parse.quote编码路径参数

修改代码如下:

import requests
import json
from urllib.parse import quote

with open('C:/asg/ftpfiles/data.json') as json_file:
    dataparse = json.load(json_file)

iPartNumber = dataparse['distributornumsku']
# 对sku进行URL编码,处理特殊字符
encoded_sku = quote(iPartNumber)

# 用编码后的sku拼接URL
r = requests.get(f'https://online.xxx.com/xxx/items/{encoded_sku}', auth=('test@test.com', 'test'))

# 先检查响应状态码,避免直接解码失败
if r.status_code == 200:
    response_data = r.json()
    with open('itemdatasku.json', 'w') as json_file:
        json.dump(response_data, json_file)
else:
    print(f"请求失败,状态码: {r.status_code},响应内容: {r.text}")

额外排查建议

以后遇到类似JSON解码错误时,建议先跳过.json()调用,先打印响应的状态码和原始内容,确认服务器返回的是否是合法JSON,这能快速定位是请求路径错误还是服务器返回异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:33:12