Invalid JSON response

2026年04月10日 23:03 processing

错误信息

Invalid JSON response

AI 解决方案

报错分析报告

1.错误翻译


原文:Invalid JSON response
译文:无效的JSON响应

2. 原因分析


  • 根本原因:接收的响应内容不符合JSON语法规范(如缺少引号/逗号、结构残缺),或返回了非JSON格式(如HTML错误页)。

  • 发生位置:通常在JSON解析代码处(如JSON.parse()json.loads()等),或接口返回数据的校验环节。
  • 3.解决方案


    JavaScript(Fetch API)为例,添加响应验证与错误捕获:
    async function safeParseJson(url) {
      try {
        const res = await fetch(url);
        const rawText = await res.text(); // 先读取原始文本(用于调试)
        
        // 验证Content-Type(可选但推荐)
        if (!res.headers.get('content-type')?.includes('application/json')) {
          throw new Error(`非JSON响应,原始内容:${rawText.slice(0, 100)}`);
        }
        
        return JSON.parse(rawText); // 安全解析
      } catch (err) {
        console.error('JSON解析失败:', err.message);
        console.debug('原始响应:', rawText); // 调试用
        return null; // 或抛出自定义错误
      }
    }
    

    若需后端修复(以Node.js/Express为例),确保返回标准JSON:

    app.get('/api/data', (req, res) => {
      try {
        const data = { code: 200, result: 'success' };
        res.setHeader('Content-Type', 'application/json'); // 明确类型
        res.send(JSON.stringify(data)); // 或用res.json(data)自动处理
      } catch (err) {
        res.status(500).json({ code: 500, error: '服务器内部错误' }); // 错误也返回JSON
      }
    });
    

    4. 预防措施


  • 接口开发校验:用[JSONLint](https://jsonlint.com/)验证输出,确保无语法错误;设置Content-Type: application/json响应头。

  • 客户端防御:解析前用try-catch包裹逻辑,优先读取原始文本调试;用Postman等工具预检查接口返回。
  • 推荐工具:Postman(接口测试)、JSONLint(JSON校验)、VS Code JSON插件(实时语法检查)。