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

如何用Jackson解析第三方API返回的格式不规范JSON?

解决Jackson解析JSON时的JsonParseException问题

这个问题我碰到过好几次,其实是你的JSON语法和Jackson默认解析规则不匹配导致的,咱们一步步解决:

问题根源分析

你拿到的JSON字符串有两个不符合标准JSON语法的地方:

  1. 字段名用了单引号(标准JSON要求双引号)
  2. 最后一个键值对末尾多了个多余的逗号('address': "IN", }里的逗号)

你已经配置了ALLOW_SINGLE_QUOTES来支持单引号,但忽略了Jackson默认不允许末尾逗号的规则,这才是触发当前错误的核心原因——Jackson会把逗号后面的}当成要解析的字段名,自然会抛出"期望双引号开头"的异常。

修复方案:补充Jackson配置

只需要在你的现有配置基础上,添加允许末尾逗号的特性即可,修改后的代码如下:

ObjectMapper objectMapper = new ObjectMapper();
// 允许字段名使用单引号
objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
// 允许忽略最后一个键值对末尾的多余逗号
objectMapper.configure(JsonParser.Feature.ALLOW_TRAILING_COMMA, true);
// 这个配置是生成JSON时是否给字段名加引号,解析时不影响,可根据你的需求保留或移除
objectMapper.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);

// 执行解析操作(替换成你的实体类)
User user = objectMapper.readValue(yourJsonString, User.class);

额外说明

如果可以联系第三方API的提供者,建议让他们修复JSON的语法问题(去掉末尾逗号、统一用双引号),这是最规范的做法;如果无法修改第三方返回的内容,上面的配置就能完美兼容这种不规范的JSON格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:36:10