SpringBoot中使用Gson处理JSON

spring boot(学习笔记第三课) Gson的解析器配置,静态资源解析 但是原来的classpath:/static/river.png已经失效了,因为Java的配置覆盖了默认的设置。之后访问,https://localhost:8080/river.png。由此可以看出,默认的情况下,静态资源的pattern是。4. 同样可以通过Java代码的方式进行配置。日期格式按照重新定义的表示出来了,但是价格。,所以下面的路径都是静态资源的路径。,但是本来默认路径还是都会变得无效。,是能够继续访问这个静态资源的。的情况下,必须按照修改后来访问。静态资源的路径也可以添加。 阅读详情
一、GSON简介

GSON是Google公司提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。

Gson特点如下:

  1. 快速、高效
  2. 代码量少、简洁
  3. 面向对象
  4. 数据传递和解析方便

Gson依赖如下:

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

注:可以看到我这里的依赖并没有指定版本号,因为Gson在SpringBoot中和Json依赖一样,是Spring官方统一管理版本号,这也是SpringBoot的一大优势,避免了版本号不一致的冲突。

【题外话】
如果想要研究SpringBoot是如何管理依赖的版本可以研究一下如下代码,仔细研究会有惊喜。打开spring-boot-starter-parent.pom文件,可以试着研究一下其中的源码。

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>
二、各个JSON技术(Jackson,Gson,Fastjson)的对比

【1.json-lib】

优势:

  • json-lib最开始也是应用最广泛的json解析工具。(现在没有优势了)

劣势:

  • 依赖于很多第三方包,包含·commons-beanutils.jar、commons-collections-3.2.jar、commons-lang-2.6.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6.jar。
  • 对于复杂类型的转换,json-lib对于json转换成bean还有缺陷,比如一个类里面会出现另一个类的list或者map集合,json-lib从json到bean的转换就会出现问题。
  • json-lib在功能和性能上面都不能满足现在互联网化的需求。

【2.开源的Jackson】

优势:

  • 相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。
  • Jackson社区相对比较活跃,更新速度也比较快。

劣势:

  • Jackson对于复杂类型的json转换bean会出现问题,一些集合Map,List的转换出现问题。
  • Jackson对于复杂类型的bean转换Json,转换的json格式不是标准的Json格式。

【3.Google的Gson】

优势:

  • Gson是目前功能最全的Json解析神器,Gson当初是因为应Google公司内部需求而由Google自行研发而来,但自从在2008年五月公开发布第一版后已被许多公司或用户应用。
  • Gson的应用主要为toJson与fromJson两个转换函数,无依赖,不需要额外的jar,能够直接跑在JDK上。
  • 类里面只要有get和set方法,Gson完全可以将复杂类型的json到bean或bean到json的转换,是JSON解析的神器。(使用这种对象转换之前需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象。)

劣势:

  • Gson在功能上面无可挑剔,但是性能上面相比阿里的FastJson还是有所差距。

【4.阿里巴巴的FastJson】

优势:

  • Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发,无依赖,不需要额外的jar,能够直接跑在JDK上。
  • FastJson采用独创的算法,将parse的速度提升到极致,超过所有json库。

劣势:

  • FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。

【总结】

综上4种Json技术的比较,在项目选型的时候可以使用Google的Gson和阿里巴巴的FastJson两种并行使用,如果只是功能要求,没有性能要求,可以使用google的Gson,如果有性能上面的要求可以使用Gson将bean转换json确保数据的正确,使用FastJson将Json转换Bean,发挥FastJson解析性能上的优势。

三、如何使用Gson

在此之前,先说明一下,Gson使用方式和Json比较相似,可以参考我的上一篇文章,先了解一下Json,SpringBoot默认的JSON解析方案。

学习Gson,只需要在Json项目上稍加改造即可,具体操作如下:

【第一步】在pom.xml文件中,去除json依赖,添加Gson依赖即可。

【去除json依赖】

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-json</artifactId>
                </exclusion>
            </exclusions>
</dependency>

【添加gson依赖】

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

注:因为是SpringBoot项目,所以不需要指定版本号,但我这里我使用的版本是

<version>2.8.6</version>

【第二步】改造上一篇文章的WebMvcConfig.java,代码如下:

package com.mango.gson.config;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.GsonHttpMessageConverter;

@Configuration
public class WebMvcConfig {

    @Bean
    GsonHttpMessageConverter gsonHttpMessageConverter(){
        GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
        converter.setGson(new GsonBuilder().setDateFormat("yyyy-MM-dd").create());
        return converter;
    }
}

【改进版】和上一篇中的ObjectMapper一样,不同的是,这里使用的是Gson,所以只需要重写Gson即可,代码如下:

package com.mango.gson.config;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.GsonHttpMessageConverter;

@Configuration
public class WebMvcConfig {

    @Bean
    Gson gson(){
        return new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
    }
}

注:在上一篇文章中,提供了源码路径,今天学习Gson也一样,这里我也提供源码路径,和上一篇中的Json学习方式相同。

【GsonHttpMessageConvertersConfiguration.java源码路径】

org.springframework.boot.autoconfigure.http.GsonHttpMessageConvertersConfiguration

【GsonAutoConfiguration.java源码路径】

org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration

最后说一下,对比学习两者之前的相同和不同之处,这样知识点容易记得住,也不容易忘记,祝大家学习愉快。

SpringBoot中Json解析方案与自定义配置方法(二)——使用Gson 一、添加依赖  新建一个最简单的Spring项目,导入Web依赖,可以发现依赖里面包含了json依赖,此依赖默认使用的是jackson,如果使用Gson需要在pom.xml中去掉Jackson依赖,并加入Gson依赖。 <dependency> <groupId>org.springframework.boot</groupId> <art... 阅读详情

相关推荐

springboot 集成返回JSON三种方式

springboot 集成返回JSON三种方式 随着web开发前后端分离技术的盛行,json是目前主流的前后端数据交互方式,使用json数据进行交互需要对json数据进行转换解析,需要用到一些json处理器,常用的json处理器有: jackson-databind,SpringBoot默认的json处理器 Gson,是Google的一个开源框架 fastjson,目前解析速度最快的开源解析框架,由阿里开发 下面分别介绍如何在SpringBoot中整合三大json解析框架。其他的controller等正常写

qq_34126923的博客 688

Spring Boot整合系列——Gson完整详细版

发现网上整合Gson的文章都不是很详细,自己在整合的过程中遇到很多不清楚的地方,所以就写了这篇文章,希望能帮助到他人少点踩坑。 本文的Spring Boot版本的是2.3.5.RELEASE,请注意版本差异 一、为啥要用gson 其实Google的Gson和阿里的Fastjson都是全网出名的json解析器,这里用Gson是因为它在解析功能最全,可能在解析速度较Fastjson有所不足。因为自己的项目也不是多复杂,不需要追求解析速度,所以就选择了Gson。 二、坑点 整合Gson的过程中,查阅了网上的资

兮杰 7378

SpringBoot返回Json数据的配置

使用三种方式返回Json数据

m0_46448741的博客 1315

在springboot项目中使用gson

gson使用详解,使用gson对java对象进行序列化和反序列化

学不会就砸电脑——的博客 2137

【学习笔记】计算机网络 第八章 无线局域网(WLAN)

计算机网络 第八章 无线局域网(WLAN)

Vera_shsf的博客 1240

Deep Reinforcement Learning - 1. DDPG原理和算法

Deep Reinforcement Learning - 1. DDPG原理和算法 背景描述 DDPG的定义和应用场景 DDPG算法相关基本概念定义 DDPG实现框架和算法 DDPG对于DPG的关键改进 下一篇 以下用RL作为Reinforcement Learning 的简称。背景描述概括来说,RL要解决的问

kenneth_yu的博客 14万+

SpringBoot使用Gson作为JSON转换器

JSON是目前主流的前后端数据传输格式,SpringBoot中默认使用Jackson作为JSON的处理器。Gson是Google开源的JSON格式化框架,今天小编为大家介绍SpringBoot中使用Gson替代默认解析框架的方案。 首先我们需要创建一个SpringBoot项目,相信绝大多数人都很熟悉了,我们在这个项目中添加一个Book实体类,添加若干个方法,并自动生成getter和setter方法,如下所示。@JsonIgnore注解表示返回的json数据格式中忽略此字段,@JsonFormat(patt

xiaokanfuchen86的博客 2384

clumsy一款模拟弱网的工具

利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包和篡改操作后再进行发送。无论你是要重现网络异常造成的程序错误,还是评估你的应用程序在不良网络状况下的表现,clumsy 都能让你在不需要额外添加代码的情况下,在系统层次帮你达到想要的效果。

klb5555的专栏 2551

Google Gson API 介绍与使用

目录 Gson 概述与下载 Gson (反)序列化 Java 对象 JsonElement Json 元素 JsonObject Json 对象 JsonArray Json 数组 JsonParser Json 解析 GsonBuilder 构建 Gson Gson 概述与下载 1、Java解析Json最常用的类库有:google 的Gson、阿里巴巴的FastJson、以及 Jackson。这些都是非常优秀而且常用的库。 2、GSON是Google提供的用来在Ja...

QY'UniverseSpace的博客 1315

python批量调用大模型API:多线程和异步协程

本文介绍了利用多线程技术批量调用大模型API的实现方法。核心是通过并发请求提高处理效率,主要采用线程池管理并发数量、结果聚合等技术。文章提供了一个完整的Python实现示例,包含APIBatchCaller类及其single_api_call和batch_call方法,详细解析了并发控制、错误处理等关键点,并给出了使用注意事项,包括并发数设置、重试策略和超时处理等。该方案特别适合IO密集型任务,能显著提升批量API调用的效率。

Cachel Wood的博客 759

部署与可视化系统:移动端跟踪系统:YOLOv8 + ByteTrack 结合 Android CameraX 实现实时行人计数 App

本文详细介绍了在Android移动端实现实时行人检测、跟踪与计数系统的完整方案。系统采用YOLOv8+ByteTrack技术栈,基于NCNN推理引擎,无需云端算力即可在手机端侧完成全流程处理。文章从技术选型、系统架构、CameraX集成等多个维度进行深入解析,重点阐述了移动端部署面临的工程挑战和优化策略。通过四层管道模型设计,实现了从图像采集到目标跟踪的高效处理流程,并采用C++ NDK开发确保性能。该系统在中端手机上可达到10FPS,旗舰机型可达30FPS,为移动端实时目标跟踪提供了可落地的解决方案。

ZXSXJ的博客 90

手摸手,一起重温SpringBoot 2知识点(五)处理JSON解析之Jackson、Gson、Fastjson格式化日期

Spring Boot 支持三种 Json 库: Gson Jackson JSON-B 默认使用的是Jackson 一、Jackson方式 全局配置类: package com.junya.thymeleaf; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotat

The man was lazy and left no message 403

【Flink on k8s】- 1 - Flink Kubernetes Operator 简介 2023

Flink Kubernetes Operator 可以与 Kubernetes 的其他功能和工具集成,可以帮助用户快速定位和解决问题。Flink Kubernetes Operator可以在Kubernetes上实现高可用性,以确保 Flink 集群的稳定性和可靠性。Flink Kubernetes Operator 可以快速地部署 Flink 集群,而无需手动配置和管理集群。Flink Kubernetes Operator可以将Flink集群与其他应用程序隔离,以避免资源争用和干扰。

欢迎来到我的博客,一起探索代码里的世界! 1344

重学springboot系列之JSON处理工具类:FastJSON、Gson和Jackson对比,Json常用注解,手动数据转换,全局配置:使用配置文件和代码,hutool工具解析json

重学springboot系列之JSON处理工具类:FastJSON、Gson和Jackson对比,Json常用注解,手动数据转换,全局配置:使用配置文件和代码,hutool工具解析json

qq120631157的博客 4036

Spring AI Alibaba Agent开发实战:DeepResearch Agent调度系统

智能Agent调度系统通过专业化分工解决传统AI系统的三大痛点:通用模型专业性不足、处理效率低下和资源浪费。系统采用分层架构设计,核心组件包括智能调度器、Agent选择辅助器和集成工具类,实现问题分类、专业Agent匹配和搜索策略优化的全流程自动化。系统特点包括:1)配置驱动的灵活扩展;2)分层回退的容错机制;3)支持工具调用与传统搜索的智能切换。该架构通过策略模式和依赖注入等技术,在保证稳定性的同时显著提升了研究质量和效率,为企业级多Agent协作提供了完整解决方案。(149字)

wjianwei666的专栏 501

在 SAP S/4HANA 分析模型中添加 Measures,Calculated、Restricted、Currency Conversion 与 Unit Conversion 的建模思路

摘要: SAP S/4HANA分析查询建模中,度量(measure)的加工层级是关键难点,涉及聚合时机、币种/单位语义、过滤上下文等复杂因素。度量不仅是数字字段,还需处理计算口径(Calculated Measures)、上下文绑定(Restricted Measures)和单位转换等问题。Calculated Measures适合派生指标(如毛利率),需注意聚合前后计算差异;Restricted Measures通过固化过滤条件(如区分实际/计划金额)确保业务语义一致性。建模时应将业务逻辑下沉到分析模型层

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1022

Spring Boot 中 JSON 处理全指南:三大库特性对比与 null 值灵活管控

Spring Boot 中 JSON 处理全指南:三大库特性对比与 null 值灵活管控

zk的博客 1114

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SpringBoot揭密:spring-boot-starter-json介绍

SpringBoot支持三种Json库:Jackson、Gson、JSON-B,Jackson是SpringBoot官方推荐的默认库。SpringBoot分别提供了Jackson、Gson、JSON-B的自动装配: org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration,\ org.springframework.boot.autoconfigure.gson.GsonAutoConfiguratio...

zhangweiocp的专栏 3402

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

springboot 返回json_Spring Boot教程(12) – 编写JSON API

目前很多公司开发项目,都选择了前后端分离的方式,不仅仅因为前端现在有丰富的生态和活跃的社区,更是因为分离让前端和后端的耦合度大大降低。前后端开发人员各司其职,各自做擅长的事情,提高了团队效率。而现在在电脑前学Spring Boot的你,很可能在将来的工作中扮演后端API开发的角色。前端和后端的数据交换格式,现在用的最广泛的是JSON,Spring Boot的Web Starter也自带了JSON的...

weixin_39688856的博客 186

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

4-springboot知识点(1)-json解析方案(jackson、gson、fastjson)、静态资源访问、文件上传、@ControllerAdvice、异常数据处理、Cors、拦截器

一、JSON解析方案 jackson gson fastjson

lylbell的博客 278

SpringBoot 整合常用JSON解析

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。 SpringBoot本身提供了Jackson和Gson,和另一种比较常用的第三方FastJson。 新建一个SpringBoot项目,创建一个User类来测试。 public class User { private int id; private String name; private Integer age; private Date birthday; ... }.

Charge8的博客 4791

springBoot系列之五-----JSON

目录 jackson GSON FastJson jackson springBoot项目中如何往前端返回JSON数据,详解 其实说springBoot呢不如说是springMVC返回json,因为springBoot和springMVC时一脉相承的。 一般springBoot web项目需要引入pom依赖: <dependency> <grou...

weixin_40267415的博客 367

SpringBoot中的默认JSON转换器及其Gson自定义

默认转换器 JSON是目前主流的前后端数据传输方式。创建一个Spring Boot项目后,添加web依赖后,依赖中默认加入了jackson-databind作为JSON处理器,此时不需要添加额外的JSON处理器就能返回一段JSON。 下面是一个示例。 Book实体类 @Data public class Book { private String name; private String author; @JsonIgnore private Float price;

Java技术工坊 1661

springboot-json转换

springboot 的json数据传输 后台返回对象,前台得到为json格式 前台请求数据为json,后台自动封装为对象 Jackson springboot中默认依赖了spring-boot-starter-json,所以我们可以不用再进行配置就可以使用。 但是有些时候,我们使用某些特殊的数据传输,比如Date对象,前台获取到的就是2020-01-07T07:50:27.440+0000格式...

Dragon_King的博客 2738

实体类未设置字段如何不参与转化json?

Jackson 是一个广泛使用的 Java JSON 处理库,Spring Boot 默认使用它来处理 JSON 数据。你可以通过 @JsonInclude。Gson 是 Google 开发的一个简单易用的 Java JSON 处理库。注解来控制哪些字段会被序列化到 JSON 中。

sosovo66的博客 464

Spring Boot 3.x 特性-JSON(gson,jackson,json-b,fastjson)

Spring Boot 3.x 提供了对多种 JSON 库的支持,通过简单配置即可使用不同的 JSON 处理库。根据项目需求选择合适的库,并在配置类中定义相应的 HTTP 消息转换器即可实现 JSON 序列化和反序列化。Jackson:Spring Boot 默认库,功能强大,性能好。Gson:轻量级,简单易用。Json-B:标准化 API,适合 Java EE 环境。Fastjson:高性能,适合对性能要求高的场景。选择合适的 JSON 处理库可以提升开发效率和应用性能。

qq_33240556的博客 1617
上一篇: SpringBoot默认的JSON解析方案
下一篇: SpringBoot中使用FastJson处理JSON
我要大芒果
博客等级 码龄9年 104粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值