likes
comments
collection
share

如何在Spring Boot中使用FastJson实现高效的JSON数据处理?这你必须得会!

作者站长头像
站长
· 阅读数 19

🏆本文收录于《Spring Boot从入门到精通》,专门攻坚指数提升。

本专栏致力打造最硬核 Spring Boot 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

📣1. 前言

  随着互联网的发展,JSON(JavaScript Object Notation)已成为近年来使用最广泛的数据交换格式之一。为了提高JSON数据的处理效率,目前市面上常用的JSON解析库有Jackson、Gson、FastJson等。本文将介绍如何在Spring Boot中使用FastJson实现高效的JSON数据处理。

  那么,具体如何实现呢?这将又会是干货满满的一期,全程无尿点不废话只抓重点教,具有非常好的学习效果,拿好小板凳准备就坐!希望学习的过程中大家认真听好好学,学习的途中有任何不清楚或疑问的地方皆可评论区留言或私信,bug菌将第一时间给予解惑,那么废话不多说,直接开整!Fighting!!

如何在Spring Boot中使用FastJson实现高效的JSON数据处理?这你必须得会!

🌊2. 环境说明

开发工具:IDEA 2021.3 JDK版本: JDK 1.8 Spring Boot版本:2.3.1 RELEASE Maven版本:3.8.2

🌊3. 摘要

  本文将首先介绍FastJson的基本概念,接下来将介绍如何在Spring Boot中集成FastJson,并通过实例来演示FastJson在Spring Boot中的应用。

🌊4. FastJson概述

  FastJson是阿里巴巴的一个开源JSON解析库,提供了JSON序列化、反序列化、数据结构转换等功能,并拥有极高的性能。目前已经被广泛应用于各种Java项目中。

FastJson的优点如下:

  1. 速度快:FastJson的处理速度比其他JSON解析库更快,是JSON解析库中速度最快的之一。
  2. 使用方便:FastJson提供多种API接口,使用方便,支持java对象与json格式之间的转换。
  3. 易于扩展:FastJson提供了一系列扩展接口,可以方便地实现自定义序列化、反序列化等扩展功能。
  4. 支持注解:FastJson支持多种注解,可以方便地控制JSON序列化或反序列化过程中的一些细节问题。

🌊5. 在Spring Boot中集成FastJson

  Spring Boot已经集成了许多常用的JSON解析库,如Jackson和Gson等,但是在某些场景中,FastJson的性能可能更高效。下面将介绍如何在Spring Boot中集成FastJson。

🌿5.1 搭建Spring Boot应用

  首先,我们先创建个基础的Spring Boot项目,如果还不会点这里,此处就不详细赘述啦。

🌿5.2 添加依赖

在pom.xml文件中添加FastJson的依赖:

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

🌿5.3 配置默认的JSON解析库

在Spring Boot的配置文件中添加以下内容:

spring:
  http:
    converters:
      preferred-json-mapper: fastjson

或者在Java配置文件中添加以下内容:

@Configuration
public class FastJSonConfig {

    @Bean
    public HttpMessageConverters fastJsonHttpMessageConverters() {
        // 创建FastJson消息转换器
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();

        // 创建配置对象
        FastJsonConfig config = new FastJsonConfig();

        // 配置序列化策略
        config.setSerializerFeatures(
                SerializerFeature.PrettyFormat,
                SerializerFeature.WriteMapNullValue,
                SerializerFeature.WriteNullStringAsEmpty,
                SerializerFeature.WriteDateUseDateFormat
        );

        // 配置字符集
        converter.setDefaultCharset(Charset.forName("UTF-8"));

        // 将配置添加到转换器中
        converter.setFastJsonConfig(config);

        // 返回HttpMessageConverters对象
        return new HttpMessageConverters(converter);
    }


}

  这些配置可以告诉Spring Boot使用FastJson作为默认的JSON解析库。

🌿5.4 使用说明

  在需要使用FastJson的地方,比如Controller方法中,使用@ResposeBody注解即可返回FastJson格式的JSON数据。

🌿5.5 示例代码

  下面通过一个简单的示例来演示FastJson在Spring Boot中的应用。

🌵5.5.1 实体类定义

@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserEntity {
    @TableId(value = "id", type = IdType.AUTO) //表示该id为自增,新增时候不需要手动设置id。
    private Integer id;

    @TableField(value = "name")
    private String name;

    @TableField(value = "age")
    private Integer age;

    @TableField(value = "sex")
    private String sex;

    @TableField(value = "address")
    private String address;

    @TableField(value = "describes")
    private String describes;

    @TableField(value = "image")
    private String image;
}

🌵5.5.2 控制器方法定义之序列化

  首先,我们定义一个Java对象,然后使用FastJson将该Java对象序列化成Json字符串。

@RestController
@RequestMapping("/user")
public class UserController {

    /**
     * 演示fastJson
     */
    @GetMapping("/{id}")
    @ApiOperation(value = "演示fastJson之序列化", notes = "演示fastJson之序列化")
    public UserEntity getUser(@PathVariable("id") Long id) {
        UserEntity user = new UserEntity();
        user.setId(1);
        user.setName("bug菌");
        user.setSex("男");
        user.setAge(20);
        user.setDescribes("这是示例数据。");
        return user;
    }

}

🌵5.5.3 控制器方法定义之反序列化

  在另外一个接口中,我们将接收一个Json字符串,并将其转换成一个Java对象。

    @PostMapping("/user")
    @ApiOperation(value = "演示fastJson之反序列化", notes = "演示fastJson之反序列化")
    public UserEntity createUser(@RequestBody String json) {
        return JSON.parseObject(json, UserEntity.class);
    }

  这里我们使用了JSON工具类提供的parseObject方法将Json字符串转换成Java对象。

🌵5.5.4 代码方法介绍

  1. 在实体类User中,使用@Data注解自动生成getter和setter方法,使用@NoArgsConstructor和@AllArgsConstructor注解分别生成无参构造方法和带参构造方法。

  2. 在控制器类UserController中,使用@RestController注解表明这是一个RESTful风格的控制器,使用@RequestMapping注解指定类级别的请求路径为"/user"。

  3. 在getUser方法上,使用@GetMapping注解将请求路径定义为"/{id}",将id作为参数,通过@RestController注解和@ResposeBody注解返回FastJson格式的JSON数据。

  4. 使用了JSON工具类提供的parseObject方法将Json字符串转换成Java对象。

🌵5.5.5 序列化测试结果展示

  启动应用后,使用浏览器访问http://localhost:8080/user/1 或者Swagger请求,将看到以下JSON数据:

{ "address":"", "age":20, "describes":"这是示例数据。", "id":1, "image":"", "name":"bug菌", "sex":"男" }

演示截图如下:

如何在Spring Boot中使用FastJson实现高效的JSON数据处理?这你必须得会!

🌵5.5.6 反序列化测试结果展示

请求后结果截图如下:

如何在Spring Boot中使用FastJson实现高效的JSON数据处理?这你必须得会! 可以看到Json字符串,成功将其转换成一个了一个UserEntity对象。

🌊6. 总结

  本文介绍了FastJson的基本概念和在Spring Boot中的集成方法,并通过实例演示了FastJson在Spring Boot中的应用。FastJson具有速度快、使用方便、易于扩展、支持注解等优点,在某些场景中,可以选择使用FastJson作为默认的JSON解析库。

  ok,以上就是我这期的全部内容啦,如果还想学习更多,你可以看看如下的往期热文推荐哦,每天积累一个奇淫小知识,日积月累下去,你一定能成为令人敬仰的大佬。

「赠人玫瑰,手留余香」,咱们下期拜拜~~

🌊7. 热文推荐

  在入门及进阶之途,我必助你一臂之力,系统性学习,从入门到精通,带你不走弯路,直奔终点;投资自己,永远性价比最高,都这么说了,你还不赶紧来学??

本文涉及所有源代码,均已上传至github开源,供同学们一对一参考 GitHub传送门

同时,原创开源不易,欢迎给个star🌟,想体验下被🌟的感jio,非常感谢❗

🌊8. 文末

如何在Spring Boot中使用FastJson实现高效的JSON数据处理?这你必须得会!