SpringBoot处理JSON数据方法详解

下面就是关于“SpringBoot处理JSON数据方法详解”的完整攻略。

1.概述

在SpringBoot中,我们通常需要使用JSON来传递数据,处理JSON数据是非常常见的操作。 SpringBoot提供了多种方式来处理JSON数据,包括:

  • 使用SpringMVC默认的jackson插件
  • 使用GSON插件
  • 使用FastJson插件

这三种方式中,SpringMVC默认的jackson插件是最为常用的方式,它可以自动将Java对象序列化为JSON数据,并能够将JSON数据反序列化为Java对象,而无需手动处理。下面,我们就来一一讲解这三种方式。

2.使用SpringMVC默认的jackson插件

2.1 序列化Java对象为JSON数据

2.1.1 直接返回Java对象

在Controller中,我们可以直接将Java对象返回给前端,SpringBoot自动将其序列化为JSON数据。如下所示:

@RestController
@RequestMapping(value = "/user")
public class UserController {
    @GetMapping(value = "/{id}")
    public User getUser(@PathVariable("id") Integer id){
        User user = new User();
        user.setId(id);
        user.setUsername("Tom");
        user.setPassword("123456");
        return user;
    }
}

上述代码中,我们创建了一个User对象,并将其返回给前端,SpringBoot自动将其序列化为了JSON数据。如果我们使用客户端工具发起请求,返回的数据如下所示:

{
    "id": 1,
    "username": "Tom",
    "password": "123456"
}

2.1.2 使用ResponseEntity返回Java对象

我们也可以使用ResponseEntity来返回Java对象,这样可以更加灵活地控制返回的HTTP状态码、响应头等信息。如下所示:

@RestController
@RequestMapping(value = "/user")
public class UserController {
    @GetMapping(value = "/{id}")
    public ResponseEntity<User> getUser(@PathVariable("id") Integer id){
        User user = new User();
        user.setId(id);
        user.setUsername("Tom");
        user.setPassword("123456");
        return ResponseEntity.ok(user);
    }
}

上述代码中,我们返回了一个ResponseEntity实例,并通过该实例设置了HTTP状态码为200。同样,客户端工具发起请求,返回的数据如下所示:

{
    "id": 1,
    "username": "Tom",
    "password": "123456"
}

2.2 反序列化JSON数据为Java对象

在SpringBoot中,我们可以通过@RequestParam注解或@RequestBody注解将JSON数据传递给后台。其中@RequestParam注解通常用于传递简单的数据类型,而@RequestBody注解则用于传递复杂的数据类型,例如Java对象。

2.2.1 使用@RequestParam注解

使用@RequestParam注解,我们可以将JSON数据中的键值对映射到Java对象的属性中。如下所示:

@RestController
@RequestMapping(value = "/user")
public class UserController {
    @PostMapping(value = "/add")
    public String addUser(@RequestParam("id") Integer id,
                          @RequestParam("username") String username,
                          @RequestParam("password") String password){
        User user = new User();
        user.setId(id);
        user.setUsername(username);
        user.setPassword(password);
        return "添加用户成功";
    }
}

上述代码中,我们在方法中使用了@RequestParam注解,将JSON数据中的id、username、password三个键值对映射到了Java对象的属性中。客户端工具发起请求,例如下面这个请求:

{
    "id": 1,
    "username": "Tom",
    "password": "123456"
}

则后台会将其反序列化为User对象,并输出“添加用户成功”。

2.2.2 使用@RequestBody注解

使用@RequestBody注解,则可以将整个JSON数据反序列化为Java对象。如下所示:

@RestController
@RequestMapping(value = "/user")
public class UserController {
    @PostMapping(value = "/add")
    public String addUser(@RequestBody User user){
        return "添加用户成功";
    }
}

上述代码中,我们使用@RequestBody注解将整个JSON数据反序列化为User对象。客户端工具发起请求,例如下面这个请求:

{
    "id": 1,
    "username": "Tom",
    "password": "123456"
}

则后台会将其反序列化为User对象,并输出“添加用户成功”。

3.使用GSON插件

GSON是一款Google提供的用于处理JSON数据的插件,使用起来也非常方便。我们只需要在pom.xml文件中添加以下依赖即可使用:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency>

3.1 序列化Java对象为JSON数据

在使用GSON处理JSON数据时,我们通常需要通过Gson对象的toJson()方法将Java对象序列化为JSON数据。如下所示:

@RestController
@RequestMapping(value = "/user")
public class UserController {
    @GetMapping(value = "/{id}")
    public String getUser(@PathVariable("id") Integer id){
        User user = new User();
        user.setId(id);
        user.setUsername("Tom");
        user.setPassword("123456");
        Gson gson = new Gson();
        return gson.toJson(user);
    }
}

上述代码中,我们创建了一个Gson对象,并将其使用toJson()方法将Java对象序列化为JSON数据。客户端工具发起请求,返回的数据如下所示:

{
    "id": 1,
    "username": "Tom",
    "password": "123456"
}

3.2 反序列化JSON数据为Java对象

在使用GSON处理JSON数据时,我们通常需要通过Gson对象的fromJson()方法将JSON数据反序列化为Java对象。如下所示:

@RestController
@RequestMapping(value = "/user")
public class UserController {
    @PostMapping(value = "/add")
    public String addUser(@RequestBody String json){
        Gson gson = new Gson();
        User user = gson.fromJson(json, User.class);
        return "添加用户成功";
    }
}

上述代码中,我们从请求的Body中获取JSON数据,并将其通过Gson对象的fromJson()方法反序列化为User对象。客户端工具发起请求,例如下面这个请求:

{
    "id": 1,
    "username": "Tom",
    "password": "123456"
}

则后台会将其反序列化为User对象,并输出“添加用户成功”。

4.使用FastJson插件

FastJson是阿里巴巴提供的用于处理JSON数据的插件,同样支持序列化和反序列化操作。我们只需要在pom.xml文件中添加以下依赖即可使用:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>

4.1 序列化Java对象为JSON数据

在使用FastJson处理JSON数据时,我们需要使用JSON.toJSONString()方法将Java对象序列化为JSON数据。如下所示:

@RestController
@RequestMapping(value = "/user")
public class UserController {
    @GetMapping(value = "/{id}")
    public String getUser(@PathVariable("id") Integer id){
        User user = new User();
        user.setId(id);
        user.setUsername("Tom");
        user.setPassword("123456");
        return JSON.toJSONString(user);
    }
}

上述代码中,我们使用JSON对象的toJSONString()方法将Java对象序列化为JSON数据。客户端工具发起请求,返回的数据如下所示:

{
    "id": 1,
    "username": "Tom",
    "password": "123456"
}

4.2 反序列化JSON数据为Java对象

在使用FastJson处理JSON数据时,我们需要使用JSON.parseObject()方法将JSON数据反序列化为Java对象。如下所示:

@RestController
@RequestMapping(value = "/user")
public class UserController {
    @PostMapping(value = "/add")
    public String addUser(@RequestBody String json){
        User user = JSON.parseObject(json, User.class);
        return "添加用户成功";
    }
}

上述代码中,我们使用JSON对象的parseObject()方法将JSON数据反序列化为User对象。客户端工具发起请求,例如下面这个请求:

{
    "id": 1,
    "username": "Tom",
    "password": "123456"
}

则后台会将其反序列化为User对象,并输出“添加用户成功”。

5.小结

本文详细讲解了使用SpringMVC默认的jackson插件、GSON插件和FastJson插件处理JSON数据的方法,并给出了相应的示例代码。

阅读剩余 82%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot处理JSON数据方法详解 - Python技术站

(1)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • jdbc连接数据库实例详解

    JDBC连接数据库实例详解 在Java程序中,经常需要与数据库进行交互。JDBC(Java Database Connectivity)是Java开发中用于连接和操作数据库的标准API。本文将详细介绍JDBC连接数据库的相关知识,包括JDBC连接步骤、示例代码等。 JDBC连接步骤 JDBC连接数据库的基本步骤如下: 加载数据库驱动 连接数据库 创建Stat…

    Java 2023年5月19日
    00
  • Linux CentOS下安装Tomcat9及web项目的部署

    下面我将详细讲解“Linux CentOS下安装Tomcat9及web项目的部署”的完整攻略。首先,假设你已经在CentOS上安装好了Java环境。 安装Tomcat9 下载Tomcat9二进制包 可以在Tomcat官网下载最新版的Tomcat9二进制包:https://tomcat.apache.org/download-90.cgi 解压Tomcat9二…

    Java 2023年5月19日
    00
  • Java集合ArrayList与LinkedList详解

    Java集合ArrayList与LinkedList详解 概述 Java集合分为两大类:Collection和Map。其中Collection又可以分为List、Set和Queue三种。 ArrayList和LinkedList是List接口的两种实现类,它们都可以存储按顺序排列的元素,但是它们之间有一些区别。本文将从以下几个方面详细讲解ArrayList和…

    Java 2023年5月26日
    00
  • MyBatis执行动态SQL的方法

    MyBatis 是一款开源的持久化框架,支持动态 SQL 的执行,可以方便地编写灵活的 SQL 语句,本文将详细讲解 MyBatis 执行动态 SQL 的方法,包括以下内容: 动态 SQL 的概念与背景 MyBatis 中执行动态 SQL 的方法 MyBatis 中使用动态 SQL 的示例 1. 动态 SQL 的概念与背景 传统的 SQL 语句是静态的,不能…

    Java 2023年5月19日
    00
  • Java实现简单控制台版ATM系统

    Java实现简单控制台版ATM系统攻略 1. 需求分析 控制台版ATM系统主要需要实现以下功能: 用户登录、注册 存款、取款、查询余额 转账功能 2. 技术选型 本篇攻略使用Java语言实现控制台版ATM系统,使用了Java IO、集合等基础知识进行编写。在框架上,本篇攻略并未用到任何框架。 3. 代码实现 代码实现主要分为以下几个部分: 3.1 用户登录、…

    Java 2023年5月18日
    00
  • Spring JPA联表查询之OneToMany源码解析

    OK,这里是详细讲解“Spring JPA联表查询之OneToMany源码解析”的完整攻略。 一、背景介绍 在开发过程中,经常需要使用 JPA 进行数据库操作,其中,面对一对多关系的模型,我们可能需要使用到 JPA 的联表查询功能。本文将以一个简单的例子为基础,深入探究 Spring JPA 如何实现一对多关系的联表查询。 二、实例解析 考虑在一个商城系统中…

    Java 2023年5月20日
    00
  • Spring Boot 配置大全(小结)

    针对“SpringBoot配置大全(小结)”这个主题,以下是一份完整攻略: SpringBoot配置大全(小结) 1. 配置文件 在Spring Boot中,我们可以通过application.properties或application.yml等配置文件来配置应用程序的相关属性。其中,application.yml文件采用了更加人性化的格式来展示配置信息。…

    Java 2023年5月15日
    00
  • Java编程实现比对两个文本文件并标记相同与不同之处的方法

    如何实现比对两个文本文件并标记相同与不同之处? 1.读取文本文件 首先,我们需要读取两个文本文件的内容,并将其转换为字符串格式。可以通过Java的文件读写API实现,即通过FileReader和BufferedReader来读取文件内容,然后将读取到的字符转化为字符串格式。 import java.io.*; public class FileCompare…

    Java 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部