Failed to parse AI response as JSON at analyzeScript (geminiService.ts:203:15) a...
🚨 错误信息
[vite] connecting...
react-dom-client.development.js:28004 Download the React DevTools for a better development experience: https://react.dev/link/react-devtools
client:912 [vite] connected.
geminiService.ts:74 发送文本请求到: https://www.dmxapi.cn/v1beta/models/gemini-2.5-flash:generateContent
geminiService.ts:95 文本请求成功完成
App.tsx:241 Error: Failed to parse AI response as JSON
at analyzeScript (geminiService.ts:203:15)
at async handleAnalyze (App.tsx:214:22)
🤖 AI解决方案
报错分析报告
错误翻译
原文:Error: Failed to parse AI response as JSON
译文:错误:无法将AI响应解析为JSON格式
原因分析
根本原因:geminiService.ts第203行在尝试将AI服务返回的响应解析为JSON时失败。
具体分析:
- AI服务(Gemini)返回的数据不是有效的JSON格式
- 可能是以下情况导致:
- 从日志可见,请求成功发送到
https://www.dmxapi.cn/v1beta/models/gemini-2.5-flash:generateContent且显示"文本请求成功完成",但返回内容无法解析
- 服务器返回了非JSON格式的响应(如HTML错误页面、纯文本等)
- JSON格式不正确(缺少引号、括号不匹配等)
- 网络问题导致响应不完整
解决方案
// geminiService.ts - 修改 analyzeScript 函数
async function analyzeScript(scriptContent: string): Promise<AnalysisResult> {
try {
const response = await sendTextRequest(scriptContent);
// 添加调试日志,查看原始响应
console.log('原始响应:', response);
// 检查响应是否为空
if (!response) {
throw new Error('AI服务返回空响应');
}
// 尝试解析JSON
let parsedResponse;
try {
parsedResponse = JSON.parse(response);
} catch (jsonError) {
console.error('JSON解析失败,原始响应:', response);
throw new Error(`无法解析AI响应: ${jsonError.message}`);
}
// 继续原有逻辑...
return processAnalysisResult(parsedResponse);
} catch (error) {
console.error('分析脚本时出错:', error);
throw error;
}
}
立即调试步骤:
Content-Type: application/json️ 预防措施
1. 增强API响应验证
// 在调用JSON.parse前添加验证
function safeJsonParse<T>(jsonString: string): T {
if (typeof jsonString !== 'string') {
throw new Error('输入必须是字符串');
}
// 基本JSON格式检查
const trimmed = jsonString.trim();
if (!(trimmed.startsWith('{') && trimmed.endsWith('}')) &&
!(trimmed.startsWith('[') && trimmed.endsWith(']'))) {
throw new Error('响应不是有效的JSON对象或数组');
}
return JSON.parse(jsonString);
}
2. 使用axios等HTTP客户端库
responseType: 'json'3. 最佳实践建议
---
请按照上述步骤检查API响应格式,如问题持续,请提供Network面板中的具体响应内容以供进一步分析。