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

Spring MVC返回HashMap遇HttpMessageNotWritableException问题求助

解决Spring MVC返回HashMap时的HttpMessageNotWritableException问题

你遇到的这个错误,核心原因是Spring MVC找不到能将HashMap序列化为JSON格式的消息转换器,这通常是因为缺少JSON处理的依赖,或者没有正确启用Spring MVC的注解驱动配置。下面一步步帮你解决:

1. 添加JSON处理依赖(Jackson)

Spring MVC默认使用Jackson库来处理JSON的序列化和反序列化,所以首先要确保你的项目中包含Jackson的核心依赖。如果是Maven项目,在pom.xml中添加以下依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version> <!-- 可替换为最新稳定版本 -->
</dependency>

如果是Gradle项目,对应的配置是:

implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'

2. 启用Spring MVC注解驱动

你的ApplicationContextConfig配置类目前只配置了视图解析、数据源和事务相关内容,但没有启用Spring MVC的核心注解支持。需要在配置类上添加@EnableWebMvc注解——这个注解会自动注册包括MappingJackson2HttpMessageConverter在内的一系列消息转换器,而正是这个转换器负责把Java对象(包括HashMap)转换成JSON:

@Configuration
@ComponentScan("com.fyt.fyt")
@EnableTransactionManagement
@EnableWebMvc // 新增该注解
public class ApplicationContextConfig {
    // 原有Bean配置保持不变...
}

3. 小细节优化(可选)

看你的Controller代码,最后返回的是new ResponseEntity<>(message,HttpStatus.CREATED),但你之前明明构建了包含success和message的json对象,这里大概率是笔误。如果要返回你定义的完整JSON结构,应该改成:

return new ResponseEntity<>(json, HttpStatus.OK);

另外,HttpStatus.CREATED通常用于POST请求创建资源的场景,GET请求用HttpStatus.OK语义更合适。

完成前两步(添加依赖+启用@EnableWebMvc)后,再用Postman调用接口,就能正常返回JSON格式的响应了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:38:46