Map、Set集合与Gson注解

一、Map的序列化与反序列化

1.Map集合类型对象在反序列化时与List一样,需要使用TypeToken完成反序列化。

2.Set在反序列化时需要使用TypeToken完成反序列化。

创建User类和job类

public class User {@Exposeprivate String userName;@Exposeprivate String password;@Exposeprivate int age;@Exposeprivate boolean isStudent;@Exposeprivate com.example.simplenotebook.xuliehuahefanxuliehua.bean.Job job;public String getUserName() {return userName;}public String getPassword() {return password;}public int getAge() {return age;}public boolean isStudent() {return isStudent;}public void setJob(Job job) {this.job = job;}public Job getJob() {return job;}public User(String userName, String password, int age, boolean isStudent) {this.userName = userName;this.password = password;this.age = age;this.isStudent = isStudent;}@Overridepublic String toString() {return "User{" +"userName='" + userName + '\'' +", password='" + password + '\'' +", age=" + age +", isStudent=" + isStudent +", job=" + job +'}';}
}
public class Job {private String name;private  int salary;public Job(String name, int salary) {this.name = name;this.salary = salary;}@Overridepublic String toString() {return "job{" +"name='" + name + '\'' +", salary=" + salary +'}';}
}

测试代码

public class MapUnitTest {@Testpublic void testSet(){Set<User> set1 = new HashSet<>();//创建set集合set1.add(new User("Anglin1","123",18,false));set1.add(new User("Anglin2","123",88,true));set1.add(null);//创建Gson提供的gson'对象Gson gson = new Gson();//序列化String json = gson.toJson(set1);System.out.println("序列化"+json);//反序列化Type type = new TypeToken<Set<User>>() {}.getType();Set<User> set2 = gson.fromJson(json,type);//set没有get方法,需要用到迭代器Iterator<User> iterator = set2.iterator();while (iterator.hasNext()){User next = iterator.next();System.out.println("反序列化"+next);}}}

运行结果

二、变量值为null的序列化与反序列化

1.当我们类型里面有一个属性为null的时候gson序列化的时候会忽略掉该属性。

2.如果是集合以及数组里面有属性为null的时候,gson则不会忽略。

三、控制序列化与反序列化的变量名称

如果希望JSON字符串字段名称不以变量名作为key,比如JSON字符串中的key在java里是关键字时,可以借助@SerializedName注解控制JSON字段中的Key命名。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/218093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Netflix Mac(奈飞客户端)激活版软件介绍

Netflix Mac(奈飞客户端)是一款流行的视频播放软件&#xff0c;专为Mac用户设计。它提供了大量的高质量电影、电视剧、纪录片和动画片资源&#xff0c;让用户可以随时随地观看自己喜欢的内容。 首先&#xff0c;Netflix Mac(奈飞客户端)以其简洁直观的用户界面而闻名。用户可以…

2024测试开发面试题完整版本(附答案)

目录 1. 什么是软件测试&#xff0c; 谈谈你对软件测试的了解 2. 我看你简历上有写了解常见的开发模型和测试模型, 那你跟我讲一下敏捷模型 3. 我看你简历上还写了挺多开发技能的, 那你给我讲讲哈希表的实现流程 4. 谈一谈什么是线程安全问题, 如何解决 5. 既然你选择走测…

Java - Spring中BeanFactory和FactoryBean的区别

BeanFactory Spring IoC容器的顶级对象&#xff0c;BeanFactory被翻译为“Bean工厂”&#xff0c;在Spring的IoC容器中&#xff0c;“Bean工厂”负责创建Bean对象。 BeanFactory是工厂。 FactoryBean FactoryBean&#xff1a;它是一个Bean&#xff0c;是一个能够辅助Spring实例…

【项目管理】CMMI对项目管理有哪些个人启发和思考

导读&#xff1a;本人作为项目经理参与公司CMMI5级评审相关材料准备工作&#xff0c;现梳理CMMI有关知识点&#xff0c;并结合项目给出部分示例参考&#xff0c;以及本人对于在整理材料过程中一些启发和体验思考。 目录 1、CMMI定义 2、CMMI-5级 3、CMMI文档清单 4、示例-度…

Node.js黑马时钟案例

先上没有使用node.js之前的html部分代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title></title><style>* {margin: 0;padding: 0;}html,body {height: 100%;overflow: hidden;backgrou…

Zabbix+Grafana

背景 对指标采集 将采集的信息存储 可视化 报警 因为节点上本身就是zabbix&#xff0c;但对应的server在数据中心&#xff0c;不知道一个agent可否服务于多个server端&#xff0c;而且不确定数据中心是否会提供用户。所以还是放弃zabbix 架构

如何使用CFImagehost结合内网穿透搭建简洁易用的私人图床并远程访问

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

OBS如何安装NDI 插件

能检索到这个文章的人&#xff0c;想必是知道什么是OBS和NDI&#xff0c;也知道他们的用途的。所以&#xff0c;不作赘述。4 安装NDI插件 1 直接访问https://github.com/obs-ndi/obs-ndi&#xff0c;打不开的同志你们自己想办法。 2 有两个东西要下载&#xff0c;如下图所示&a…

Python中栈的概念和使用

目录 一、引言 二、栈的概念 三、栈的使用 1、创建栈 2、入栈操作 3、出栈操作 4、查看栈顶元素 5、判断栈是否为空 四、应用场景 1、函数调用 2、表达式求值 3、深度优先搜索 4、括号匹配 五、总结 一、引言 栈是一种重要的数据结构&#xff0c;它遵循后进先出…

Axure元件基本介绍进阶

Axure元件基本介绍进阶 1.Axure元件基本介绍1.在 Axure 中&#xff0c;元件是构建原型的基本构成单元&#xff0c;能够帮助设计师快速创建、重复使用和管理设计元素。以下是 Axure 中元件的基本介绍&#xff1a;1.基本元件&#xff1a; 2.基本元件的使用一.【举例说明】积木&am…

Qt提升绘制效率,绘制加速。

在我们绘制一些复杂逻辑且数据量巨大的图形时&#xff0c;经常会出现流畅性问题&#xff0c;本文就是来进行讲解如何提升绘制效率的。 实现思路&#xff1a; 场景1&#xff1a;我们绘制多个静态图形和绘制一张图片哪个更快。很明显绘制多个图形的时候要慢很多。所以我们将多个图…

【二分查找】【区间合并】LeetCode2589:完成所有任务的最少时间

作者推荐 【动态规划】【广度优先】LeetCode2258:逃离火灾 本文涉及的基础知识点 二分查找算法合集 有序向量的二分查找&#xff0c;向量只会在尾部增加删除。 题目 你有一台电脑&#xff0c;它可以 同时 运行无数个任务。给你一个二维整数数组 tasks &#xff0c;其中 ta…

圣诞节酷炫特效合集【含十几个HTML+CSS前端特效+34个桌面酷炫圣诞程序】

写在前面 ❤️源码获取:订阅后见文末 ❤️内容介绍:包含HTML+CSS等十几个圣诞特效;以及三十四个桌面酷炫圣诞树合集 ❤️订阅后所得如下: ❤️HTML圣诞+桌面圣诞程序效果如下: 下方展示代码仅举例其中几个 所有效果源码及文件订阅后找博主获取即可 🎄css3圣诞雪人动…

基于python的大数据分析与应用环境的搭建

一、主要目的&#xff1a; 初步熟悉Python数据分析工具&#xff0c;通过查阅相关说明文档掌握Numpy、Scipy和Pandas包的基本使用方法。对于不同形式的源数据文件&#xff0c;能够基于python开发环境正确的完成数据导入。 二、主要内容&#xff1a; 1、Python开发环境安装以及…

阿里云国际跨境直播解决方案,视频AI创新营销模式丰富直播场景

据第三方咨询公司iiMedia Research预测&#xff0c;2017-2020年&#xff0c;视频直播行业一直处于高速发展阶段。2020年&#xff0c;视频直播行业市场收入超1万亿元&#xff0c;累计覆盖用户5.26亿。 视频直播的应用范围已从视频娱乐、电子商务等泛互联网行业扩展到在线教育、…

分布式数据库 GaiaDB-X 金融应用实践

1 银行新一代核心系统建设背景及架构 在银行的 IT 建设历程中&#xff0c;尤其是中大行&#xff0c;大多都基于大型机和小型机来构建核心系统。随着银行业务的快速发展&#xff0c;这样的系统对业务的支持越来越举步维艰&#xff0c;主要体现在以下四个方面&#xff1a; 首先…

[C++] 继承

文章目录 1、继承的概念及定义1.1 继承的概念1.2 继承的定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 2、基类和派生类对象赋值转换3、继承中的作用域4、派生类的默认成员函数5、继承与友元6、继承与静态成员7、菱形继承&#xff0c;菱形虚拟…

centOS 64位安装node_exporter

下载node_exporter 我是在这里https://prometheus.io/download/#node_exporter下载到自己电脑&#xff0c;然后使用rz命令传到linux上的。 关于rz命令的使用可看我的这个文章linux上传下载文件lrzsz 解压 tar -xzf node_exporter-1.7.0.linux-amd64.tar.gz将执行文件移动到b…

数据中心到底是如何工作的?

数字时代的数据中心&#xff0c;就如同网络世界的心脏&#xff0c;它的鼓动关系到整个网络生态的运转。但这个复杂而庞大的数据枢纽背后隐藏着怎样的精密机制&#xff0c;是许多人颇感好奇的谜。 数字时代的数据中心&#xff0c;就如同网络世界的心脏&#xff0c;它的鼓动关系…

Python爬虫实战 | 爬取拼多多商品的详情价格SKU数据

本案例将为大家演示如何爬取拼多多商品的详情数据。目的是爬取大量的商品以及商品的评论&#xff0c;所以在程序设计上要考虑到该爬虫的高并发以及持久化存储。爬虫工具选用了Scrapy框架&#xff0c;以满足爬虫的高并发请求任务&#xff1b;持久化存储用了MongoDB&#xff0c;对…