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

Ajax调用控制器端点时Jackson抛出JsonParseException异常

解决Jackson解析时的JsonParseException(base64字符串截断)问题

这个错误我之前在处理文件转base64的请求时也碰到过,核心原因就是Jackson在解析base64格式字符串时,发现内容不完整或者不符合规范,直接抛出了Unexpected end-of-String异常。下面给你几个排查和解决的思路:

1. 检查前端生成/传输的base64字符串是否完整规范

base64编码有个硬性要求:字符串长度必须是4的倍数,不足的部分需要用=补位。如果前端生成的base64字符串缺少补位字符,或者传输过程中被截断(比如大文件导致请求体被截断),Jackson就会触发这个错误。

你可以在前端发送请求前,先对base64字符串做校验和补全:

function fixBase64Padding(base64Str) {
  // 去掉可能的data URI前缀(比如data:image/png;base64,)
  const pureBase64 = base64Str.split(',')[1] || base64Str;
  // 补全到4的倍数
  while (pureBase64.length % 4 !== 0) {
    pureBase64 += '=';
  }
  return pureBase64;
}

2. 确保Ajax请求的Content-Type设置正确

如果你的请求是JSON格式,一定要在Ajax里明确设置contentType: "application/json; charset=utf-8",否则后端可能无法正确解析请求体,导致Jackson拿到的内容是乱码或不完整片段。

示例Ajax请求:

$.ajax({
  url: '/your-controller-endpoint',
  method: 'POST',
  contentType: 'application/json; charset=utf-8', // 关键设置
  data: JSON.stringify({
    node: {
      // 你的node对象字段,比如base64Content: fixBase64Padding(yourBase64String)
    }
  }),
  success: function(res) {
    // 处理响应
  }
});

3. 后端调试确认接收的请求体是否完整

你可以在控制器方法里先打印整个请求体,看看实际接收到的base64字符串和前端发送的是否一致:

@RequestMapping(value = "/your-endpoint", method = RequestMethod.POST)
public ResponseEntity<?> handleRequest(HttpServletRequest request) throws IOException {
  // 读取整个请求体
  String requestBody = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
  System.out.println("Received request body: " + requestBody);
  // 后续的Jackson解析逻辑
  return ResponseEntity.ok().build();
}

如果打印的内容里base64字符串确实被截断,就要排查前端传输或服务器配置问题(比如服务器是否限制了请求体大小)。

4. 确认后端实体类的字段类型匹配

如果你的Node类里对应base64的字段是byte[]类型,Jackson会自动尝试把base64字符串解码成字节数组,但格式不对就会报错。如果不需要自动解码,也可以把字段改成String类型,自己处理解码逻辑,这样能更灵活地排查问题。

示例实体类:

public class Node {
    // 其他字段
    private String base64Content; // 用String接收,后续自己解码
    // 或者用byte[]让Jackson自动解码
    // private byte[] base64Content;

    // getter和setter方法
}

按照上面的步骤排查,基本就能解决这个base64解析的EOF异常了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:07:50