这个异常是 ​Alibaba FastJSON2​ 解析 JSON 数据时抛出的错误,具体原因是解析器在数据的起始位置(第 1 行第 1 列)​​ 发现了无效字符 <。以下是详细分析和解决方案:


异常原因

  1. 无效的起始字符
    异常明确提到 character <,表示解析器期望收到一个有效的 JSON 开头(例如 {[),但实际收到的第一个字符是 <(通常是 XML/HTML 的起始符号)。

  2. 非 JSON 数据
    最可能的情况是:

    • 你尝试解析的数据不是 JSON 格式​(例如服务器返回了 XML、HTML 或纯文本)。
    • 常见场景:
      • API 请求返回了 ​错误页面(如 404/500 的 HTML 页面)​
      • 请求未正确设置 Content-Type 头,导致服务器返回了默认格式(如 XML)。
      • 网络层拦截(如代理、防火墙)返回了非 JSON 响应。
  3. 数据来源问题
    如果数据来自 HTTP 请求:

    • URL 错误​(请求了非 API 地址)。
    • 身份认证失败​(如 token 过期),服务器返回登录页面。
    • 请求方法错误​(如用 GET 访问只支持 POST 的接口)。

排查步骤

1. 检查原始数据内容

在解析前打印原始响应内容,确认是否为 JSON:

String rawResponse = getResponseFromServer(); // 获取原始数据
System.out.println("原始响应: " + rawResponse); // 重点看开头是否包含 "<?"

如果输出类似以下内容,说明是 XML/HTML:

<!-- 示例:HTML 错误页面 -->
<!DOCTYPE html>
<html>
<head><title>404 Not Found</title></head>
<body>...</body>
</html>
2. 验证数据来源
  • 确认 API 地址正确​:检查请求 URL 是否指向正确的 JSON 接口。
  • 检查 HTTP 状态码​:确保响应码是 200 OK 而非 404500 等错误。
  • 检查响应头​:确保 Content-Typeapplication/json,而非 text/htmltext/xml
3. 代码修复示例

如果原始数据是 HTML/XML,需要优先处理错误情况:

try {
    String jsonData = getDataFromNetwork(); // 从网络获取数据
    if (jsonData.startsWith("<")) { // 检测无效数据
        throw new RuntimeException("服务器返回了非 JSON 数据");
    }
    JSONObject obj = JSON.parseObject(jsonData); // 解析 JSON
} catch (JSONException e) {
    // 处理解析失败
}

解决方案

  1. 修复数据来源

    • 确保请求的 API 地址正确且返回 JSON 格式。
    • 在 HTTP 请求头中明确要求 JSON:
      // 示例:使用 HttpURLConnection 设置 Accept 头
      connection.setRequestProperty("Accept", "application/json");
  2. 处理服务器错误

    • 捕获 HTTP 错误状态码(如 4xx/5xx),并终止 JSON 解析流程。
    • 检查服务器日志,确认其是否正确处理了请求。
  3. 更换解析工具(非必须)​
    如果是第三方数据源强制返回 XML,可改用 ​XML 解析器​(如 Jackson、JAXB),或先转换格式:

    // 示例:将 XML 转换为 JSON(需额外库)
    String json = XmlMapper.convertXmlToJson(xmlData);

总结

此异常的根本原因是 ​输入数据不符合 JSON 格式。请优先确保:

  1. 数据来源可靠(正确 URL + 返回 JSON 格式)。
  2. 解析前验证原始内容(避免处理错误页面)。

通过检查网络响应和修复请求逻辑,即可解决该问题。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐