当前位置: 首页 > article >正文

spring 设置接收json request 返回json类型response

在 Spring 中配置接收 JSON 输入并返回 JSON 输出,可以按照以下步骤进行:

1. 添加依赖(非 Spring Boot 项目)

如果使用 Spring Boot,默认已集成 Jackson,无需额外配置。若为传统 Spring MVC 项目,需手动添加 Jackson 依赖:

<!-- Maven -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.3</version>
</dependency>

2. 配置消息转换器(非 Spring Boot 项目)

在 Spring MVC 配置类中注册 MappingJackson2HttpMessageConverter

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        // 注册 JSON 消息转换器
        converters.add(new MappingJackson2HttpMessageConverter());
    }
}

3. 使用 @RestController 注解控制器

@RestController@Controller@ResponseBody 的组合,确保方法返回值直接序列化为 JSON。

@RestController
@RequestMapping("/api/users")
class UserController {
    
    // 处理 POST 请求,接收 JSON 输入
    @PostMapping
    fun createUser(@RequestBody user: User): User {
        // 保存用户逻辑
        return user
    }

    // 处理 GET 请求,返回 JSON 数据
    @GetMapping("/{id}")
    fun getUser(@PathVariable id: Long): User {
        return User(id, "Alice", 30)
    }
}

4. 定义数据模型(POJO)

确保模型类有无参构造函数和 getter/setter(Java)或使用 data class(Kotlin):

data class User(
    val id: Long? = null,
    val name: String,
    val age: Int
)

5. 自定义 JSON 序列化/反序列化(可选)

通过配置 ObjectMapper 调整日期格式、字段命名策略等:

@Configuration
public class JacksonConfig {
    
    @Bean
    public ObjectMapper objectMapper() {
        return new ObjectMapper()
            .setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"))
            .setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
    }
}

6. 处理请求和响应

请求示例(POST /api/users):
POST /api/users HTTP/1.1
Content-Type: application/json

{
    "name": "Bob",
    "age": 25
}
响应示例(JSON):
{
    "id": 1,
    "name": "Bob",
    "age": 25
}

7. 验证配置

使用 Postmancurl 测试接口:

curl -X POST http://localhost:8080/api/users \
-H "Content-Type: application/json" \
-d '{"name": "Bob", "age": 25}'

8. 常见问题排查

问题解决方案
415 Unsupported Media Type检查请求头 Content-Type: application/json 是否设置正确。
返回 XML 而非 JSON确保 Jackson 依赖已添加,且 MappingJackson2HttpMessageConverter 优先级高。
日期格式不符合预期配置 ObjectMapperDateFormat
字段名不符合驼峰/下划线约定通过 @JsonProperty 注解或 PropertyNamingStrategy 调整。

总结

通过以上配置,Spring 应用可以轻松实现 JSON 数据的接收和返回。关键点在于:

  1. 添加 Jackson 依赖。
  2. 使用 @RestController@RequestBody 注解。
  3. 配置消息转换器(Spring Boot 自动完成)。
  4. 通过 ObjectMapper 定制序列化行为。

http://www.kler.cn/a/613767.html

相关文章:

  • vivado 定义输入延迟
  • 【安全】记录钓鱼邮件中木马病毒的分析溯源
  • Linux fority source和__builtin_xxx
  • Burp Suite抓包实战:SQL注入漏洞挖掘
  • 无人机宽带自组网机载电台技术详解,50KM超远图数传输系统实现详解
  • Debian ubuntu源
  • 深度求索(DeepSeek):以AI之力重塑医疗未来
  • 机器学习——LightGBM
  • 系统间交互时,怎么校验两个系统所在服务器时间是否一致
  • 【Linux】应用层协议 HTTP
  • CSS3学习教程,从入门到精通,CSS3 媒体查询实现响应式布局语法指南(21)
  • 从dev分支checkout出一个functionA分支开发功能
  • linux》》docker 、containerd 保存镜像、打包tar、加载tar镜像
  • 数据库----单表、多表
  • 基于EFISH-SBC-RK3576的无人机智能飞控与数据存储方案
  • Leetcode 组合总和 III
  • 鸿蒙OS 5.0 服务能力框架深入剖析
  • markdown 文件转 word
  • 原生android实现定位java实现
  • elementUI el-image图片加载失败解决