Unexpected token '<', "<!DOCTYPE "... is not valid JSON

2026年03月14日 13:37 processing

错误信息

SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON

AI 解决方案

1. 错误翻译


原文:Unexpected token '<', "译文:意外的标记‘<’,‘

2.原因分析


  • 根本原因:尝试将HTML内容(含<!DOCTYPE声明)当作JSON解析,JSON解析器遇到<标记报错。

  • 发生位置:调用JSON.parse或类似方法处理接口响应时,响应实际返回的是HTML(如404/500错误页、登录页)。
  • 3. 解决方案


    以JavaScript fetch为例,修复代码:
    async function safeParseJson(url) {
      try {
        const res = await fetch(url);
        if (!res.ok) throw new Error(`HTTP ${res.status}`);
        // 验证响应类型
        const type = res.headers.get("content-type");
        if (!type?.includes("application/json")) {
          throw new Error(`非JSON响应: ${type}`);
        }
        return await res.json();
      } catch (err) {
        // 捕获解析错误并打印原始响应(排查HTML内容)
        const raw = await fetch(url).then(r => r.text()).catch(() => "无法读取响应");
        console.error("解析失败,原始响应:", raw.slice(0, 200)); // 截断长内容
        throw err;
      }
    }
    

    4. 预防措施


  • 最佳实践1:解析前用response.headers.get("Content-Type")验证类型为application/json

  • 最佳实践2:用try-catch包裹JSON解析,错误时打印原始响应排查。

  • 推荐工具:用Postman测试接口返回,或浏览器DevTools→Network面板查看响应体。