gson转对象

gson转对象

Gson 中对象类型的相互转换

最近使用Gson来处理了json串,使用了一些常用的方法,为加深印象,因此记录下来

package JsonObjectDemo;import com.google.gson.*;
import com.google.gson.reflect.TypeToken;import java.util.ArrayList;
import java.util.List;public class JsonObjectDemo {public static void main(String[] args) {List<User> userList = new ArrayList<User>();User user = new User("张三", 18);User user1 = new User("李四", 20);userList.add(user);userList.add(user1);Gson gson = new Gson();JsonObject jsonObject = new JsonObject();jsonObject.addProperty("name","张三");jsonObject.addProperty("age",18);//JavaBean 转 StringString userString = gson.toJson(user, User.class);//或者使用Type来获取类型  String s1 = gson.toJson(user, new TypeToken<User>(){}.getType());//{"name":"张三","age":18}//System.out.println(userString);//JavaBean 转 JsonObjectJsonObject asJsonObject = gson.toJsonTree(user).getAsJsonObject();//{"name":"张三","age":18}//System.out.println(asJsonObject);//String 转 JavaBeanString javaBeanString = "{\"name\":\"张三\",\"age\":18}";User user3 = gson.fromJson(javaBeanString, User.class);//User{name='张三', age=18}//System.out.println(user3);//String 转 JsonObjectJsonObject jsonObject1 = new JsonParser().parse(javaBeanString).getAsJsonObject();//{"name":"张三","age":18}//System.out.println(jsonObject1);//JsonObject 转 JavaBeanUser user2 = gson.fromJson(jsonObject, User.class);//User{name='张三', age=18}//System.out.println(user2.toString());//JsonObject 转 String//{"name":"张三","age":18}System.out.println(jsonObject1.toString());//List 转 StringString listString = gson.toJson(userList);// [{"name":"张三","age":18},{"name":"李四","age":20}]//System.out.println(listString);//List 转 JsonArrayJsonArray jsonArray = gson.toJsonTree(userList, new TypeToken<List<User>>() {}.getType()).getAsJsonArray();//[{"name":"张三","age":18},{"name":"李四","age":20}]//System.out.println(jsonElement);//String 转 JsonArrayJsonArray jsonArray1 = new JsonParser().parse(listString).getAsJsonArray();//[{"name":"张三","age":18},{"name":"李四","age":20}]//System.out.println(jsonArray1);//String 转 listList<User> listUser = gson.fromJson(listString, new TypeToken<List<User>>() {}.getType());//[User{name='张三', age=18}, User{name='李四', age=20}]//System.out.println(listUser.toString());//JsonArray 转 String//[{"name":"张三","age":18},{"name":"李四","age":20}]System.out.println(jsonArray.toString());//JsonArray 转 ListList<User> listUser1 = gson.fromJson(jsonArray, new TypeToken<List<User>>() {}.getType());//[User{name='张三', age=18}, User{name='李四', age=20}]//System.out.println(listUser1);}
}class User {private String name;private int age;User() {}User(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}

1 JsonElement 中 添加 null 只能使用 add 方法
2 null值的类型是 JsonNull 因此判null的时候应该使用 isJsonNull()
3 如果json中包含null值,使用gson转出来的对象都不包含含有null值的 key-value对,这时候需要使用另一个gson对象来做处理
4 Gson gsonContainsNull = new GsonBuilder().serializeNulls().create();
5 如果想对 value 值做处理的封装,比如说将 value 中的 null 值转为其他字符,则可以使用 gson中的TypeAdapter来做相应的处理。
————————————————
版权声明:本文为CSDN博主「beetle_lzk」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lixiaoksi/article/details/112388626

Gson 中对象类型的相互转换_beetle_lzk的博客-CSDN博客_gson转对象

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

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

相关文章

一起脱去小程序的外套和内衣 - 微信小程序架构解析

作者介绍&#xff1a; 渠宏伟&#xff0c;腾讯高级工程师&#xff0c;从事Web前端开发5年&#xff0c;先后负责企鹅电竞、腾讯视频VIP、腾讯OA开发框架、腾讯微信HR助手等项目。对Web前端架构、.NET架构有丰富的经验。 | 导语 微信小程序的公测掀起了学习小程序开发的浪潮&…

基数排序+速度测试

package com.atguigu.sort;import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class RadixSort {public static void main(String[] args) {//53, 3, 542, 748, 14, 214 // int …

ssh(Spring+Spring mvc+hibernate)——DeptServiceImpl.java

/** * Title: DeptServiceImpl.java * Package org.service.impl * Description: TODO该方法的主要作用&#xff1a; * author A18ccms A18ccms_gmail_com * date 2017-11-21 上午10:08:50 * version V1.0 */ package org.service.impl;import java.io.Serializable; imp…

JavaScript学习总结(九)——Javascript面向(基于)对象编程

转载自 JavaScript学习总结(九)——Javascript面向(基于)对象编程 一、澄清概念 1.JS中"基于对象面向对象" 2.JS中没有类(Class)&#xff0c;但是它取了一个新的名字叫“原型对象”&#xff0c;因此"类原型对象" 二、类(原型对象)和对象(实例)的区别与联…

杭州驾照驾驶证更换

1.去杭州市和睦医院体检 体检费15元 做个测试眼睛度数的 2.去杭州车管所 换证 排队大约20分钟 要带一张白底照片 也可以现场有自助拍照的 弄好之后大约再等 20分钟 可以拿到证件 其他 可以去xx邮政的 不过不是现场拿证 要过7个工作日 会邮寄过来

ssh(Spring+Spring mvc+hibernate)——EmpServiceImpl.java

/** * Title: EmpServiceImpl.java * Package org.service.impl * Description: TODO该方法的主要作用&#xff1a; * author A18ccms A18ccms_gmail_com * date 2017-11-21 上午10:19:41 * version V1.0 */ package org.service.impl;import java.io.Serializable; impo…

将Springboot项目放在服务器上一直运行

nohup java -jar hz-sms-0.0.1-SNAPSHOT.jar >/www/wwwroot/...-0.0.1-SNAPSHOT.out 2>&1 &

迁移数据库到SQL on Linux Docker

问题引入 前一篇文章&#xff0c;菜鸟找到了SQL on Linux Docker容器销毁后&#xff0c;容器中的数据库文件可以得以保留的方法&#xff0c;老鸟非常开心。所以&#xff0c;今天又提出了新的问题&#xff1a;“鸟儿&#xff0c;如果我想把我的数据库从SQL on Windows迁移到SQL …

Spring IoC 容器

转载自 Spring IoC 容器 IoC 容器 Spring 容器是 Spring 框架的核心。容器将创建对象&#xff0c;把它们连接在一起&#xff0c;配置它们&#xff0c;并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入&#xff08;DI&#xff09;来管理组成一个应用程序的组…

keyshot卡住了还能保存吗_相机希望你知道的13件事 keyshot相机切换事件

一次我去我学校的球场看足球比赛&#xff0c;遇见一对父母&#xff0c;他们在为自己的孩子拍摄&#xff0c;全程用自动挡&#xff0c;还对着几百米远奔跑的儿童开闪光灯!老实说作为一名严肃的摄影爱好者我有深深的强迫症&#xff0c;于是忍不住就上去跟他们聊开手把手教拍摄技巧…

mybatis-plus le ge 记录

mybatis-plus le ge 记录_LazyTing的博客-CSDN博客 出异常源代码 this.baseMapper.selectList(new QueryWrapper<PersonnelRoleDO>().lambda().eq(PersonnelRoleDO::getTenantId, tenantId).eq(PersonnelRoleDO::getPersonnelCode, personnelCode).ge(PersonnelRoleDO::g…

ssh(Spring+Spring mvc+hibernate)——applicationContext.xml

<?xml version"1.0" encoding"UTF-8"?> <beansxmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:p"http://www.springframework.org/schema/p"xm…

Spring Beans 自动装配

转载自 Spring Beans 自动装配 Beans 自动装配 你已经学会如何使用<bean>元素来声明 bean 和通过使用 XML 配置文件中的<constructor-arg>和<property>元素来注入 。 Spring 容器可以在不使用<constructor-arg>和<property> 元素的情况下自动…

字段缺失_区分Protobuf 3中缺失值和默认值

来自公众号&#xff1a;新世界杂货铺这两天翻了翻以前的项目&#xff0c;发现不同项目中关于Protobuf 3缺失值和默认值的区分居然有好几种实现。今天笔者冷饭新炒&#xff0c;结合项目中的实现以及切身经验共总结出如下六种方案。增加标识字段众所周知&#xff0c;在Go中数字类…

当初怎么就入了VS的坑

使用Turbo C和Turbo Pascal开始学习编程貌似也是一代人的集体记忆。这方面我也没什么忌讳&#xff0c;毕竟Borland Turbo C在九十年代末的PC上面还是一个运行效率不错的开发工具。然而启蒙老师的水平限制&#xff0c;那个时候所学习的编写和调试技术都不过关&#xff0c;一个超…

ssh(Spring+Spring mvc+hibernate)——hibernate.cfg.xml

<?xml version1.0 encodingUTF-8?> <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse H…

生成赫夫曼编码表

package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStatistic; import com.sun.org.glassfish.external.statistics.StringStatistic;import java.util.*;/*** 创建人 wdl* 创建时间 2021/3/27* 描述*/ public class HuffmanCode {publi…

Mysql截取字段中 用逗号分割 省市县镇街道社区小区

Mysql截取字段中 用逗号分割 省市县镇街道社区小区 select id , name, substring_index(name,,,0) as province0, substring_index(name,,,1) as province1, substring_index(name,,,2) as province2, substring_index(name,,,3) as province3, substring_index(name,,,4) as…

如何导出Navicat的数据库连接配置

如何导出Navicat的数据库连接配置 如何导出Navicat的数据库连接配置_石头wang的博客-CSDN博客_navicat 导出配置 如何导出Navicat的数据库连接配置 背景 我们可能会在不同的电脑安装Navicat&#xff0c;这些连接的配置如何从一台电脑迁移到另外一条&#xff1f;自行备份是比较…

Spring BeanFactory 容器

转载自 Spring BeanFactory 容器 Sping 的 BeanFactory 容器 这是一个最简单的容器&#xff0c;它主要的功能是为依赖注入 &#xff08;DI&#xff09; 提供支持&#xff0c;这个容器接口在 org.springframework.beans.factory.BeanFactory 中被定义。 BeanFactory 和相关的…