GSON实现Java对象的JSON序列化与反序列化的实例教程
更新时间:2016年06月22日 11:49:25 投稿:goldensun
GSON是Google开发并开源的一个Java的JSON转换库,这里我们将来讲解GSON实现Java对象的JSON序列化与反序列化的实例教程,需要的朋友可以参考下
从GitHub下载GSON:https://github.com/google/gson
Gson的应用主要为toJson与fromJson两个转换函数,而在使用这种对象转换之前需先创建好对象的类别以及其成员才能成功的将JSON字符串成功转换成相对应的对象。
class Examples { private int answer1 = 100; private String answer2 = "Hello world!"; Examples(){ } // default constructor }
序列化JAVA对象成JSON字符串
Examples example1 = new Examples(); Gson gson = new Gson(); String json = gson.toJson(example1);
json结果将是
{"answer1":100,"answer2":"Hello world!"}
反序列化JSON字符串成对应的JAVA对象
Examples example2= gson.fromJson(json,Examples.class);
==> example2即與example1相同
对象example1通过toJson序列化成JSON字符串传递,再宣告一个对象example2为接收了JSON后通过fromJson反序列化成example2,故example1与example2相同
示例:
import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.Map; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; class User{ public User(String name,int age,StringBuffer sex,boolean isChild){ this.name = name; this.age = age; this.sex = sex; this.isChild = isChild; } private String name; private int age; private StringBuffer sex; private boolean isChild; public String toString(){ return "{name="+name+";age="+age+";sex="+sex+";isChild="+isChild+"}"; } public int hashCode(){ return name.hashCode()*100+age; } } public class GsonTest { public static void main(String[] args) { Gson gson = new Gson(); System.out.println("1普通的Bean的转换**************************"); System.out.println("将一个Bean转换成为json字符串->"); User user1 = new User("凤姐",12,new StringBuffer("未知"),true); System.out.println("转换之前的user1"+user1); String json = gson.toJson(user1); System.out.println("User对象转换成为Json字符串,json==="+json); System.out.println("***************************"); System.out.println("将一个json字符串转换成为Bean->"); User user2 = gson.fromJson(json, User.class); System.out.println("转换成为的user2=="+user2); System.out.println(); System.out.println("2Collection集合的转换**************************"); System.out.println("将一个Bean的List集合转换成为json字符串->"); Collection<User> userList1 = new ArrayList<User>(); for(int i=0;i<3;i++){ User user = new User("如花",10+i,new StringBuffer("男"),false); userList1.add(user); } json = gson.toJson(userList1); System.out.println("User的List集合对象转换成为Json字符串,json==="+json); System.out.println("***************************"); System.out.println("将一个json字符串转换成为Bean的List集合->"); Collection<User> userList2 = gson.fromJson(json, new TypeToken<Collection<User>>(){}.getType()); System.out.println("转换成为的User的List集合,userList2="+userList2); System.out.println(); System.out.println("3Array数组的转换**************************"); System.out.println("将一个Bean的Array数组转换成为json字符串->"); User [] userArray1 = new User[3]; for(int i=0;i<userArray1.length;i++){ userArray1[i] = new User("芙蓉",20,new StringBuffer("人妖"),true); } json = gson.toJson(userArray1); System.out.println("User的数组对象转换成为Json字符串,json==="+json); System.out.println("***************************"); System.out.println("将一个json字符串转换成为Bean的数组对象->"); User [] userArray2 = gson.fromJson(json, new TypeToken<User[]>(){}.getType()); System.out.println("转换成为的User的数组对象,userArray2="+Arrays.toString(userArray2)); System.out.println(); System.out.println("4Map的转换**************************"); System.out.println("将一个Bean的Map转换成为json字符串->"); Map<String,User> map1 = new HashMap<String,User>(); for(int i=0;i<3;i++){ map1.put(""+(i+10), userArray1[i]); } json = gson.toJson(map1); System.out.println("User的Map集合转换成为Json字符串,json==="+json); System.out.println("***************************"); System.out.println("将一个json字符串转换成为Bean的数组对象->"); Map<String,User> map2 = gson.fromJson(json, new TypeToken<Map<String,User>>(){}.getType()); System.out.println("转换成为的User的数组对象,map2=="+map2); } }
运行结果:
1普通的Bean的转换************************** 将一个Bean转换成为json字符串-> 转换之前的user1{name=凤姐;age=12;sex=未知;isChild=true} User对象转换成为Json字符串,json==={"name":"凤姐","age":12,"sex":"未知","isChild":true} *************************** 将一个json字符串转换成为Bean-> 转换成为的user2=={name=凤姐;age=12;sex=未知;isChild=true} 2Collection集合的转换************************** 将一个Bean的List集合转换成为json字符串-> User的List集合对象转换成为Json字符串,json===[{"name":"如花","age":10,"sex":"男","isChild":false},{"name":"如花","age":11,"sex":"男","isChild":false},{"name":"如花","age":12,"sex":"男","isChild":false}] *************************** 将一个json字符串转换成为Bean的List集合-> 转换成为的User的List集合,userList2=[{name=如花;age=10;sex=男;isChild=false}, {name=如花;age=11;sex=男;isChild=false}, {name=如花;age=12;sex=男;isChild=false}] 3Array数组的转换************************** 将一个Bean的Array数组转换成为json字符串-> User的数组对象转换成为Json字符串,json===[{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},{"name":"芙蓉","age":20,"sex":"人妖","isChild":true}] *************************** 将一个json字符串转换成为Bean的数组对象-> 转换成为的User的数组对象,userArray2=[{name=芙蓉;age=20;sex=人妖;isChild=true}, {name=芙蓉;age=20;sex=人妖;isChild=true}, {name=芙蓉;age=20;sex=人妖;isChild=true}] 4Map的转换************************** 将一个Bean的Map转换成为json字符串-> User的Map集合转换成为Json字符串,json==={"10":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},"11":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},"12":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true}} *************************** 将一个json字符串转换成为Bean的数组对象-> 转换成为的User的数组对象,map2=={10={name=芙蓉;age=20;sex=人妖;isChild=true}, 11={name=芙蓉;age=20;sex=人妖;isChild=true}, 12={name=芙蓉;age=20;sex=人妖;isChild=true}}
您可能感兴趣的文章:
相关文章
使用spring aop 统一捕获异常和写日志的示例demo
本文通过一个小demo给大家介绍spring AOP 实现的异常捕获和日志的方法技巧,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2021-08-08java ArrayList集合中的某个对象属性进行排序的实现代码
这篇文章主要介绍了java ArrayList集合中的某个对象属性进行排序的实现代码,需要的朋友可以参考下2016-07-07
最新评论