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

2023年 9月 12日 85.3k 0

👨‍🎓作者:bug菌
✏️博客:CSDN、掘金、infoQ、51CTO等
🎉简介:CSDN | 阿里云 | 华为云 | 51CTO等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。

...

✍️温馨提醒:本文字数:1999字, 阅读完需:约 5 分钟

🏆本文收录于《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!!

🌊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的优点如下:

  • 速度快:FastJson的处理速度比其他JSON解析库更快,是JSON解析库中速度最快的之一。
  • 使用方便:FastJson提供多种API接口,使用方便,支持java对象与json格式之间的转换。
  • 易于扩展:FastJson提供了一系列扩展接口,可以方便地实现自定义序列化、反序列化等扩展功能。
  • 支持注解: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的依赖:

    
        com.alibaba
        fastjson
        1.2.72
    
    

    🌿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 代码方法介绍

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

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

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

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

  • 🌵5.5.5 序列化测试结果展示

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

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

    演示截图如下:

    在这里插入图片描述

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

    请求后结果截图如下:

    在这里插入图片描述
    可以看到Json字符串,成功将其转换成一个了一个UserEntity对象。

    🌊6. 总结

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

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

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

    🌊7. 热文推荐

      若想学习更多,可以参考这篇专栏总结《2023最新首发,全网最全 Spring Boot 学习宝典(附思维导图)》,本专栏致力打造最硬核 Spring Boot 进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中。欢迎大家订阅持续学习。

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

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

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

    🌊8. 文末

    我是bug菌,CSDN | 阿里云 | 华为云 | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论