Spring MVC返回JSON数据

简介: 综上所述,Spring MVC提供了灵活、强大的方式来支持返回JSON数据,从直接使用 `@ResponseBody`及 `@RestController`注解,到通过配置消息转换器和异常处理器,开发人员可以根据具体需求选择合适的实现方式。

在当今的Web开发过程中,JSON已经成为前后端数据交换的首选格式之一。Spring MVC框架提供了简便的方式来支持JSON数据的接收和响应,让开发人员能够轻松实现RESTful服务。在Spring MVC中返回JSON数据,通常采用以下几种方式。

使用 @ResponseBody

在Spring MVC中,@ResponseBody注解告诉框架不要将方法的返回值作为视图名称解析,而是直接将返回值写入到响应体中。如果返回的是一个对象或集合,Spring将自动将其转换为JSON格式。

@RestController
public class UserController {

    @GetMapping("/user")
    @ResponseBody
    public User getUser() {
        User user = new User();
        user.setId(1);
        user.setName("张三");
        user.setEmail("zhangsan@example.com");
        return user;
    }
}
AI 代码解读

在这个例子中,getUser方法返回一个 User对象,由于 @ResponseBody的作用,Spring会自动使用Jackson或Gson等库将 User对象转换成JSON格式的字符串。

使用 @RestController

自Spring 4.0起,@RestController注解被引入,它等同于 @Controller加上每个方法上的 @ResponseBody。如果控制器中所有的方法都返回类似JSON这种的数据,可以选择将 @Controller换成 @RestController以简化配置。

@RestController
public class UserController {

    @GetMapping("/user")
    public User getUser() {
        // 方法实现同上
    }
}
AI 代码解读

配置消息转换器

当Spring MVC调用方法并使用 @ResponseBody注解时,它会遍历已配置的 HttpMessageConverter列表,寻找能够处理方法返回类型的转换器。你可以按需添加或覆盖默认的消息转换器。

spring-mvc.xml配置文件(或通过等价的Java配置)中,可以像以下这样配置 MappingJackson2HttpMessageConverter

<beans>
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="supportedMediaTypes" value="application/json"/>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
</beans>
AI 代码解读

处理异常

当返回JSON数据时,有时也需要处理异常。可以使用 @ExceptionHandler注解创建局部的异常处理器,或者使用 @ControllerAdvice创建全局的异常处理器。

@RestController
public class UserController {

    @GetMapping("/user")
    public User getUser() {
        // 方法实现同上
    }

    @ExceptionHandler(UserNotFoundException.class)
    public ResponseEntity<String> handleUserNotFoundException(UserNotFoundException ex) {
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
    }
}
AI 代码解读

在这个例子中,如果在获取用户信息时触发了 UserNotFoundException异常,将会调用 handleUserNotFoundException方法来处理。

综上所述,Spring MVC提供了灵活、强大的方式来支持返回JSON数据,从直接使用 @ResponseBody@RestController注解,到通过配置消息转换器和异常处理器,开发人员可以根据具体需求选择合适的实现方式。

目录
打赏
0
4
4
0
468
分享
相关文章
淘宝商品评论API接口,json数据示例参考
淘宝开放平台提供了多种API接口来获取商品评论数据,其中taobao.item.reviews.get是一个常用的接口,用于获取指定商品的评论信息。以下是关于该接口的详细介绍和使用方法:
SPL 处理多层 JSON 数据比 DuckDB 方便多了
esProc SPL 处理多层 JSON 数据比 DuckDB 更便捷,尤其在保留 JSON 层次与复杂计算时优势明显。DuckDB 虽能通过 `read_json_auto()` 将 JSON 解析为表格结构,但面对深层次或复杂运算时,SQL 需频繁使用 UNNEST、子查询等结构,逻辑易变得繁琐。而 SPL 以集合运算方式直接处理子表,代码更简洁直观,无需复杂关联或 Lambda 语法,同时保持 JSON 原始结构。esProc SPL 开源免费,适合复杂 JSON 场景,欢迎至乾学院探索!
|
14天前
|
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
63 0
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
第05课:Spring Boot中的MVC支持
第05课:Spring Boot中的MVC支持
|
29天前
|
Spring Boot返回Json数据及数据封装
在Spring Boot中,接口间及前后端的数据传输通常使用JSON格式。通过@RestController注解,可轻松实现Controller返回JSON数据。该注解是Spring Boot新增的组合注解,结合了@Controller和@ResponseBody的功能,默认将返回值转换为JSON格式。Spring Boot底层默认采用Jackson作为JSON解析框架,并通过spring-boot-starter-json依赖集成了相关库,包括jackson-databind、jackson-datatype-jdk8等常用模块,简化了开发者对依赖的手动管理。
150 3
PHP技巧:解析JSON及提取数据
这就是在PHP世界里探索JSON数据的艺术。这场狩猎不仅仅是为了获得数据,而是一种透彻理解数据结构的行动,让数据在你的编码海洋中畅游。通过这次冒险,你已经掌握了打开数据宝箱的钥匙。紧握它,让你在编程世界中随心所欲地航行。
137 67
配置Nginx根据IP地址进行流量限制以及返回JSON格式数据的方案
最后,记得在任何生产环境部署之前,进行透彻测试以确保一切运转如预期。遵循这些战术,守卫你的网络城堡不再是难题。
131 3
如何在 Postman 中上传文件和 JSON 数据
如果你想在 Postman 中同时上传文件和 JSON 数据,本文将带你一步一步地了解整个过程,包括最佳实践和技巧,让你的工作更轻松。
如何在 Postman 中发送 JSON 数据
我们将深入探讨使用 Postman 发送 JSON 数据这一主题,Postman 是一款强大的 API 测试和开发工具。无论您是经验丰富的开发人员还是新手,掌握这项技能对于高效的 API 测试和开发都至关重要。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问