Java:no content to map due to end of input

"no content to map due to end of input":Jackson 反序列化时,输入流里没有任何内容可解析(比如传了空字符串 `""` 或 `null`)。

根本原因通常是这几类:

  • 接口返回了空内容:HTTP 响应、Kafka 消息或文件读取结果是空串/空流,直接拿去 `readValue` 就报错。

  • 数据源本身有问题:请求参数无效(比如 ID 已被删除)、服务异常或网络中断,导致返回了空响应。

  • Jackson 旧版本缺陷:部分旧版本(如 2.9.x)对空输入处理不友好,升级到 2.11.3 及以上 可减少这类问题。

解决方案:

  1. 反序列化前先判空(最推荐的做法)

if (json == null || json.trim().isEmpty()) {

// 返回 null、抛业务异常或走降级逻辑

return null;

}

return objectMapper.readValue(json, TargetClass.class);

  1. 升级 Jackson 依赖

Maven 里把 `jackson-databind` 升到较新版本,比如 `2.13.0` 或更高。

  1. 开启容错配置(不推荐作为主要手段)

objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);

开启后空字符串会被当作 `null` 处理,但要注意目标对象是否允许为 null;这个配置对字符串类型字段本身不生效,只对 POJO、Map 等复合类型有效。

  1. 检查数据源

确认请求的 URL 参数有效、服务端返回了合法 JSON(哪怕是 `{}`),而不是裸空响应;如果服务端不可控,前端/调用方一定要做空值兜底。

相关推荐
梅雅达编程笔记2 分钟前
04-Python CSV数据保存与翻页抓取
开发语言·爬虫·python·pandas·数据采集·csv
C++ 老炮儿的技术栈8 分钟前
有符号变量与无符号变量的区别
服务器·开发语言·前端·数据结构·c++·算法·c
估值探索者15 分钟前
【Python量化策略实战 #04】Donchian 通道假突破太多?用 ATR 阈值过滤跑通真实突破信号
开发语言·python·接口·api接口·数据api接口·股票数据api接口
个 人 练 习 生18 分钟前
C++:模板初阶详解
开发语言·c++·经验分享·学习
知识分享小能手29 分钟前
C++ 学习教程,从入门到精通,C++类继承 — 完整知识点详解(13)
开发语言·c++·学习
弹简特33 分钟前
【Java项目-企悦抽】15-活动管理模块02-活动创建测试与活动列表实现
java·开发语言·springboot
斯内普吖35 分钟前
(开源)水果蔬菜商城实战指南 基于 Java + SSM + Vue + MySQL
java·vue.js·mysql·开源
wang_shu_mo_ran41 分钟前
Spring IoC和DI概念篇
java·后端·spring
小狼154541 小时前
拼多多订单数据导出 CSV 实战:接口分页、字段平铺与 5 个数据坑,多多开票助手
java·前端·javascript
Joe_Wang51 小时前
【从0到1学习JVM · 25】同样都要停顿所有线程,Parallel比Serial到底强在哪
java·jvm·学习·垃圾回收