讲师中心 微信公众号
AI工具推荐 视频效率加速

Spring MVC 中怎么使用 MappingJackson2HttpMessageConverter 处理 JSON

大瑶同学_1999

大瑶同学_1999

发布时间:2026-08-08 15:56:07

|

703人浏览过

|

来源于php中文网

原创

MappingJackson2HttpMessageConverter是Spring MVC默认注册的JSON消息转换器,依赖Jackson库实现Java对象与JSON的双向自动转换;Spring Boot引入spring-boot-starter-web即自动配置该转换器,配合@RequestBody和@ResponseBody注解即可完成JSON请求响应处理。

spring mvc 中怎么使用 mappingjackson2httpmessageconverter 处理 json

Spring MVC 默认就配置了 MappingJackson2HttpMessageConverter,只要项目里有 Jackson 依赖(如 jackson-databind),它就会自动处理 JSON 的请求和响应,无需手动注册。关键是要确保类路径正确、控制器方法签名合理,并理解它的默认行为和常见定制点。

确认 Jackson 依赖已引入

该转换器依赖 Jackson 库,Maven 中需包含:

  • com.fasterxml.jackson.core:jackson-databind(必需)
  • com.fasterxml.jackson.core:jackson-core(databind 已传递依赖,显式声明非必须)
  • com.fasterxml.jackson.core:jackson-annotations(用于注解支持,如 @JsonIgnore、@JsonProperty)

若使用 Spring Boot,只需引入 spring-boot-starter-web,它已默认包含这些依赖。

控制器方法如何触发 JSON 转换

转换器在以下场景自动生效:

  • 请求体含 JSON 且控制器方法参数标注 @RequestBody → 自动反序列化为 Java 对象
  • 返回值类型是 POJO 或集合,且方法标注 @ResponseBody 或类上有 @RestController → 自动序列化为 JSON 响应
  • HTTP 请求头中 Content-Type: application/json 和/或 Accept: application/json 会被识别并参与匹配

例如:

@PostMapping("/user")
@ResponseBody
public User createUser(@RequestBody User user) {
    return userService.save(user);
}

此时请求体 JSON 会由 MappingJackson2HttpMessageConverter 解析成 User 实例。

jm-jsjkxyjs02-zlm-405
jm-jsjkxyjs02-zlm-405

使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。

下载

自定义 Jackson 配置(如日期格式、空值处理)

可通过配置 ObjectMapper 来调整 JSON 行为。Spring Boot 推荐在 application.yml 中配置:

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    serialization-inclusion: NON_NULL
    default-property-inclusion: NON_NULL

纯 Spring MVC(非 Boot)可在 Java 配置中自定义 ObjectMapper Bean,并注入到 MappingJackson2HttpMessageConverter:

@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    ObjectMapper mapper = new ObjectMapper();
    mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    converter.setObjectMapper(mapper);
    return converter;
}

注意:若手动注册该 Converter,需确保它被加入 RequestMappingHandlerAdapter 的 messageConverters 列表中(Spring Boot 自动完成)。

调试转换失败的常见原因

JSON 处理失败时,通常不是 Converter 本身问题,而是以下原因:

  • 请求未带 Content-Type: application/json 头 → Spring 不会选择该 Converter
  • POJO 缺少无参构造函数或字段无 getter/setter → Jackson 反序列化失败
  • 字段类型不匹配(如 JSON 传字符串,Java 字段是 LocalDateTime 但未配日期格式)
  • 循环引用未处理(如父子双向关联)→ 需加 @JsonManagedReference/@JsonBackReference 或配置 SerializationFeature.FAIL_ON_EMPTY_BEANS
  • Controller 方法没加 @ResponseBody(或没用 @RestController)→ 返回值不会走消息转换流程

启用 debug 日志(org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter)可查看实际使用的 MessageConverter。

热门AI工具

更多
Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

2831

2025.08.06

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

517

2026.01.26

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

690

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

343

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

553

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

303

2025.11.27

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

4756

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1415

2023.07.28

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

0

2026.11.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn