【API测试工具错误报告】 错误码: 错误 0 错误: Unexpected token 'd', "data: {"id"... is not valid J...
错误信息
【API测试工具错误报告】
错误码: 错误 0
错误: Unexpected token 'd', "data: {"id"... is not valid JSON
模型: gpt-5.5
接口: https://www.dmxapi.cn/v1/chat/completions
令牌: sk-MyB...6Rs0
时间: 2026/6/2 17:28:11
AI 解决方案
AI 思考过程
▼
好的,用户提供了API测试的错误报告。这是一个典型的JSON解析错误。用户看起来是在使用API测试工具调用DMXAPI的chat completions接口时遇到了问题。
嗯,这个错误信息很明确:"Unexpected token 'd', "data: {"id"... is not valid JSON"。我看到用户使用了gpt-5.5模型,这可能意味着用户在测试最新的模型。
从错误内容来看,接口返回的数据以"data: {"id"开头,但JSON解析器期望的是一个有效的JSON对象。这说明接口返回的不是纯JSON格式,而是Server-Sent Events (SSE)格式。
我需要按照标准的分析流程来处理这个报错。首先进行错误翻译,把英文错误信息准确翻译成中文。然后分析根本原因,很明显是格式不匹配导致的解析失败。
接下来要提供解决方案。既然问题出在响应格式上,就需要调整请求或解析逻辑。如果是工具的问题,可能需要检查是否支持SSE;如果是自己写的代码,需要使用SSE解析库。
最后还要给出预防措施,避免以后再犯同样的错误。可以建议在调用API时明确指定响应格式,或者先查看API文档了解支持的响应类型。
用户的问题很清晰,就是API调用返回了非预期的格式。我要确保分析准确、解决方案实用,帮助用户快速解决问题。
🔍 报错分析
1. 🌐 错误翻译
原文:Unexpected token 'd', "data: {"id"... is not valid JSON
译文:遇到意外的符号 'd',"data: {"id"... 不是有效的 JSON 格式
2. 🎯 原因分析
您遇到的错误是典型的JSON解析失败。根本原因在于:您使用的API测试工具期望接口返回一个纯JSON格式的响应,但实际收到的是Server-Sent Events (SSE) 格式的数据流。SSE格式以
data: 前缀开头,这不是标准的JSON,导致工具的JSON解析器在读取到第一个字符 d 时便无法识别并报错。3. 💡 解决方案
您有两种主要的解决途径:
方案一:检查并修改请求参数(推荐)
在请求头或请求体中,尝试明确指定响应格式为 text/event-stream,或者查找API是否支持返回纯JSON。例如,在请求体中检查是否误设了 "stream": false。
// 示例:明确请求非流式(纯JSON)响应
{
"model": "gpt-5.5",
"messages": [{"role": "user", "content": "你好"}],
"stream": false // 关键:设置为false以获取JSON对象
}
方案二:使用支持SSE的客户端或代码
如果您确实需要流式响应(stream: true),则需要使用能够解析SSE格式的工具或自行编写解析逻辑。
# Python 示例:使用 `requests` 库处理SSE流
import requests
import json
url = "https://www.dmxapi.cn/v1/chat/completions"
headers = {"Authorization": "Bearer sk-MyB...6Rs0"}
data = {
"model": "gpt-5.5",
"messages": [{"role": "user", "content": "你好"}],
"stream": True
}
response = requests.post(url, headers=headers, json=data, stream=True)
for line in response.iter_lines():
if line:
decoded_line = line.decode('utf-8')
if decoded_line.startswith('data:'):
# 移除 "data: " 前缀,解析JSON
json_str = decoded_line[len('data: '):]
if json_str.strip() == '[DONE]':
break
chunk = json.loads(json_str)
print(chunk['choices'][0]['delta'].get('content', ''), end='')
4. 🛡️ 预防措施
data: 前缀。Content-Type(如 application/json 或 text/event-stream)判断格式,再调用相应的解析器。