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;
    }
}

在这个例子中,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() {
        // 方法实现同上
    }
}

配置消息转换器

当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>

处理异常

当返回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());
    }
}

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

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

目录
相关文章
|
26天前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:
|
29天前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
1月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
2月前
|
JSON 缓存 自然语言处理
多语言实时数据微店商品详情API:技术实现与JSON数据解析指南
通过以上技术实现与解析指南,开发者可高效构建支持多语言的实时商品详情系统,满足全球化电商场景需求。
|
26天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
2313 40
|
29天前
|
NoSQL Java 数据库连接
《深入理解Spring》Spring Data——数据访问的统一抽象与极致简化
Spring Data通过Repository抽象和方法名派生查询,简化数据访问层开发,告别冗余CRUD代码。支持JPA、MongoDB、Redis等多种存储,统一编程模型,提升开发效率与架构灵活性,是Java开发者必备利器。(238字)
|
29天前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
1月前
|
JSON 中间件 Java
【GoGin】(3)Gin的数据渲染和中间件的使用:数据渲染、返回JSON、浅.JSON()源码、中间件、Next()方法
我们在正常注册中间件时,会打断原有的运行流程,但是你可以在中间件函数内部添加Next()方法,这样可以让原有的运行流程继续执行,当原有的运行流程结束后再回来执行中间件内部的内容。​ c.Writer.WriteHeaderNow()还会写入文本流中。可以看到使用next后,正常执行流程中并没有获得到中间件设置的值。接口还提供了一个可以修改ContentType的方法。判断了传入的状态码是否符合正确的状态码,并返回。在内部封装时,只是标注了不同的render类型。再看一下其他返回的类型;
144 3
|
1月前
|
JSON Java Go
【GoGin】(2)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法
bind或bindXXX函数(后文中我们统一都叫bind函数)的作用就是将,以方便后续业务逻辑的处理。
243 3
|
2月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南

热门文章

最新文章