You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中使用Gson转换JSON字符串为JSON对象时遇解析错误求助

解决JSON.parse: unexpected character at line 1 column 1的问题

我之前对接外部API时也碰到过一模一样的报错,咱们一步步来排查和解决:

可能的原因1:API返回的JSON字符串带有BOM(字节顺序标记)

很多外部API返回的UTF-8格式JSON会带一个看不见的BOM字符(ASCII码65279),这个字符在字符串开头,肉眼看不到,但会直接导致JSON.parse识别失败。

排查方法:

在解析前打印字符串第一个字符的ASCII码确认:

String test = smite.getPlayer(player);
System.out.println("第一个字符ASCII码:" + (int)test.charAt(0));

如果输出是65279,那就肯定是BOM的问题。

解决办法:

移除开头的BOM字符:

if (test.startsWith("\uFEFF")) {
    test = test.substring(1);
}

可能的原因2:双重序列化导致输出格式错误

你现在返回的是Gson的JsonArray对象,Spring MVC在处理返回值时,可能会把这个对象再序列化一次,导致最终输出的是一个带引号的字符串(比如"[{\"name\":\"PacSnackz\"}]"),而不是纯JSON数组,浏览器解析时自然会报错。

解决办法:

有两种靠谱的思路:

  1. 直接返回API原始字符串,让Spring直接把它作为JSON响应输出:
@RequestMapping("/player")
@ResponseBody // 确保返回内容直接作为响应体
public String displayPlayer() throws Exception{
    String player = "PacSnackz";
    smite.createSession();
    String test = smite.getPlayer(player);
    // 先移除BOM(如果存在)
    if (test.startsWith("\uFEFF")) {
        test = test.substring(1);
    }
    return test;
}
  1. 解析成Java实体类列表返回,让Spring自动完成正确序列化:
    先定义和API返回结构匹配的Player实体类:
public class Player {
    private String name;
    private int level;
    // 根据API返回的字段添加对应属性,以及getter/setter方法
}

然后修改Controller方法:

@RequestMapping("/player")
public List<Player> displayPlayer() throws Exception{
    String player = "PacSnackz";
    smite.createSession();
    String test = smite.getPlayer(player);
    // 移除BOM(如果存在)
    if (test.startsWith("\uFEFF")) {
        test = test.substring(1);
    }
    // 用Gson解析成实体类列表
    Gson gson = new Gson();
    Type playerListType = new TypeToken<List<Player>>(){}.getType();
    List<Player> playerList = gson.fromJson(test, playerListType);
    return playerList;
}

可能的原因3:API返回的不是合法JSON

有时候外部API会返回非纯JSON内容,比如开头有多余的空格、换行,或者带有防XSS的前缀(比如)]}',)。

排查方法:

直接打印test字符串,把内容复制到本地的JSON校验工具(比如IDE自带的JSON格式化功能),检查是否是合法的JSON格式。如果有多余前缀,直接截取掉对应的部分即可。

先从这几个方向排查,应该能很快解决这个问题!

内容的提问来源于stack exchange,提问作者user4068802

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:15:20