最近使用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来做相应的处理。

Gson 中对象类型的相互转换相关推荐

  1. ts定义对象中对象类型

    定义 type IPlanTagProps = {content: string;bg?: string;color?: string; };type tagsProps = {[propName: ...

  2. Java中的对象类型像引用还是指针,谁是谁非?

    Java中的对象类型像引用还是指针,谁是谁非? 作者:海枫 地址:http://blog.csdn.net/linyt 作为一名程序员,我们应该对新知识和新技术刨根问底,而不应泛泛而谈.我未曾接触到J ...

  3. 创建健壮的isArray()函数(JavaScript中判断对象类型的种种方法)

    我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...

  4. java中三种转string的方法_java中int,char,string三种类型的相互转换

    如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将 ...

  5. Java中,一切皆是对象——java中的对象类型与基本数据类型的区别

    起因:取一个list给另一个list赋值,然后在另一个list中取出进行修改.list其中类型为对象时,String时,基本数据类型时. [java中的对象类型与基本数据类型的区别] #声明和实例化 ...

  6. js中的对象类型与具体的对象

    js 基础学习地址:http://www.w3school.com.cn/ JS对象类型:本地对象.宿主对象(浏览器对象).内置对象 本地对象:独立于宿主环境的ECMAScript实现提供的对象,简单 ...

  7. python中函数type可以测试对象类型_python类型检测最终指南--Typing模块的使用

    正文共:30429 字 预计阅读时间:76分钟 原文链接:https://realpython.com/python-type-checking/ 作者:Geir Arne Hjelle 译者:陈祥安 ...

  8. JAVA 【引用类型】和【对象类型】在【继承】中的异同

    介绍 JAVA [引用类型]和[对象类型]在[继承]中的异同.这个问题自己整理过N次.也被人当菜鸟问过N次.所以,在此简单整理一下.以供大家分享. 在继承关系中.一般成员变量是依据引用类型 在继承关系 ...

  9. html5怎么改为vue_是否还在疑惑Vue.js中组件的data为什么是函数类型而不是对象类型...

    点击上方"前端印象",选择"设为星标"第一时间关注技术干货! 引言 要理解本篇文章,必须具备JavaScript中基本数据类型和引用数据类型的概念,大家可以花两 ...

最新文章

  1. 大数据产业正处在蓬勃发展的孕育期与机遇期
  2. wordpress搭建个人博客
  3. 笔记 - AliCloud 云数据库 简介
  4. Hadoop手动升级HA配置手册
  5. Spring中Bean的生命周期是怎样的?
  6. cocos2d-x开发之动作游戏实战--5
  7. 用户与组在Linux 菜单,linux 用户和组的管理
  8. 相机标定(六)—— 张正友标定法
  9. 深度学习自学(二十二):推理框架-MNN
  10. Evince 3.7.5 发布,多格式文档浏览器
  11. 史上最污技术解读,让你秒懂IT术语
  12. JSP之jsp内置标签
  13. 几款超好看的英文字体
  14. 任正非的小女儿,出道了!以后会代言华为手机吗?
  15. 通过L-evy飞行进行布谷鸟搜索
  16. H无穷控制学习笔记——H无穷/H2控制
  17. 在内核中之获取HKEY_CURRENT_USER对应路径
  18. Kafka 开启 ACLs 权限控制
  19. spark driver HA
  20. C语言自学路之计算平方(输入验证)

热门文章

  1. 嵌套交叉验证的一致特征(Consensus features nested cross-validation)
  2. JQuery动画+事例
  3. 美团后台面试经验参考
  4. 阿里巴巴 暑假实习 笔试题(2014年3月29日)
  5. 结构体构造和析构函数
  6. 响应式分布式区别_边缘计算的七种定义,边缘计算与云计算、雾计算的区别
  7. 架构:安全架构——信息过滤与反垃圾、风险控制。
  8. OCR证件识别技术的功能特点
  9. 高等代数 二次型与矩阵的合同(第6章)2 正定二次型与正定矩阵
  10. AndroidStudio简单代码实现BMI计算