深圳多彩科技集团有限公司,seo赚钱方法大揭秘,友汇网网站建设管理后台,网站备案核验点#x1f49d;#x1f49d;#x1f49d;欢迎来到我的博客#xff0c;很高兴能够在这里和您见面#xff01;希望您在这里可以感受到一份轻松愉快的氛围#xff0c;不仅可以获得有趣的内容和知识#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学… 欢迎来到我的博客很高兴能够在这里和您见面希望您在这里可以感受到一份轻松愉快的氛围不仅可以获得有趣的内容和知识也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂 非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。 ✨✨ 欢迎订阅本专栏 ✨✨ 博客目录 一.基本介绍1.什么是 gson?2.gson 优点?3.引入依赖 二.简单实用1.使用示例2.实体类 三.注意事项1.处理空值2.处理异常3.自定义序列化4.日期格式5.字段访问权限6.循环引用7.性能优化8.版本控制 一.基本介绍
1.什么是 gson?
Gson 是 Google 提供的一个用于 Java 编程语言的 JSON 序列化和反序列化库。它可以将 Java 对象转换为 JSON 格式的字符串也可以将 JSON 格式的字符串转换为 Java 对象。Gson 提供了灵活性和易用性因此它在处理 JSON 数据时非常受欢迎。
2.gson 优点?
以下是 Gson 的一些主要特性和用途
对象序列化和反序列化 Gson 可以将 Java 对象序列化为 JSON 字符串也可以将 JSON 字符串反序列化为 Java 对象。这使得在前端和后端之间传递数据时变得非常方便。支持复杂对象 Gson 能够处理复杂的 Java 对象包括嵌套对象和集合。它会自动处理对象之间的关系将它们转换为相应的 JSON 格式。自定义序列化和反序列化 Gson 允许开发人员自定义对象的序列化和反序列化过程以满足特定需求。这通过实现 JsonSerializer 和 JsonDeserializer 接口来实现。与 Android 兼容 Gson 适用于 Android 平台因此它在 Android 开发中也经常被使用。性能 Gson 旨在提供高性能的 JSON 处理。它采用了一些优化策略以确保在处理大量数据时保持高效率。开源 Gson 是一个开源项目可以在 GitHub 上找到其源代码。这意味着开发人员可以查看、修改和贡献代码。
3.引入依赖
dependencies!-- Other dependencies --dependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion2.8.9/version !-- Replace with the latest version --/dependency
/dependencies二.简单实用
1.使用示例
以下是一个简单的使用 Gson 进行序列化和反序列化的示例
import com.google.gson.Gson;public class Example {public static void main(String[] args) {// 创建一个 Java 对象Person person new Person(John, 25);// 使用 Gson 将对象转换为 JSON 字符串Gson gson new Gson();String jsonString gson.toJson(person);System.out.println(JSON String: jsonString);// 使用 Gson 将 JSON 字符串转换为对象Person newPerson gson.fromJson(jsonString, Person.class);System.out.println(Deserialized Person: newPerson);}
}2.实体类
class Person {private String name;private int age;public Person(String name, int age) {this.name name;this.age age;}Overridepublic String toString() {return Person{ name name \ , age age };}
}在这个示例中Person 类的对象被序列化为 JSON 字符串然后又被反序列化回一个新的 Person 对象。
三.注意事项
1.处理空值
处理空值 Gson 默认情况下会将 Java 对象中的 null 值序列化为 JSON 字符串中的 null并在反序列化时将 JSON 字符串中的 null 转换为 Java 对象的 null。确保你的对象在需要时能够处理 null 值。
2.处理异常
处理异常 在进行反序列化时要考虑可能出现的异常如 JSON 字符串与目标对象不匹配、JSON 字符串格式错误等。使用 try-catch 块捕获 JsonSyntaxException 异常或其他可能的异常并适当处理它们。
3.自定义序列化
自定义序列化和反序列化 如果你的对象包含复杂的结构或需要特殊处理可以实现 JsonSerializer 和 JsonDeserializer 接口以提供自定义的序列化和反序列化逻辑。
4.日期格式
日期格式 Gson 默认使用 ISO 8601 格式来处理日期。如果你的日期格式不符合默认规范你可能需要设置自定义的日期格式例如使用 setDateFormat 方法。
Gson gson new GsonBuilder().setDateFormat(yyyy-MM-ddTHH:mm:ss.SSSZ).create();需要指定时间格式,在不同的服务器上时间格式不一样
Gson gson new GsonBuilder().setDateFormat(MMM dd, yyyy, h:mm:ss a).create();
String userVOPageStr stringRedisTemplate.opsForValue().get(key);return gson.fromJson(userVOPageStr, new TypeTokenPageUserVO() {}.getType());5.字段访问权限
字段访问权限 Gson 默认情况下只处理公共字段和 getter 方法。确保你的对象具有适当的字段访问权限公共或提供 getter 方法以便 Gson 能够访问和处理它们。
6.循环引用
循环引用 Gson 默认情况下不处理循环引用。如果你的对象图包含循环引用你可能需要使用 Expose 注解来标记不想被序列化的字段并使用 SerializedName 来处理字段名称。
class Person {Expose(serialize false, deserialize false)private Person friend;
}7.性能优化
性能优化 对于大型数据集考虑使用 JsonReader 和 JsonWriter 直接进行流式处理以避免在内存中保留整个 JSON 树。这可以提高性能并减少内存占用。
8.版本控制
版本控制 当你的对象模型发生变化时要注意版本控制以确保向后和向前兼容性。可以使用 Since 和 Until 注解来指定字段的版本信息。
class Person {Since(1.0)private String name;
}了解 Gson 的功能和一些高级配置选项并根据你的具体需求进行配置可以帮助你更有效地使用该库。官方文档和源代码也是很好的参考资源。 觉得有用的话点个赞 呗。 ❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正 如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧