• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

GSON实现Java对象的JSON序列化与反序列化的实例教程

java 搞代码 4年前 (2022-01-09) 29次浏览 已收录 0个评论

从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<a>本文来源gao($daima.com搞@代@#码8网^</a>的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}}

更多GSON实现Java对象的JSON序列化与反序列化的实例教程相关文章请关注搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:GSON实现Java对象的JSON序列化与反序列化的实例教程

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址