使用Google的Gson实现对象和json字符串之间的转换

Posted 月是故乡明95

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Google的Gson实现对象和json字符串之间的转换相关的知识,希望对你有一定的参考价值。

使用Google的Gson实现对象和json字符串之间的转换

需要gson.jar

 

1.JsonUtil.java

Java代码  技术分享
  1. package com.snail.json;  
  2.   
  3. import java.lang.reflect.Type;  
  4. import com.google.gson.Gson;  
  5. /** 
  6.  * Java对象和JSON字符串相互转化工具类 
  7.  * @author penghuaiyi 
  8.  * @date 2013-08-10 
  9.  */  
  10. public final class JsonUtil {  
  11.       
  12.     private JsonUtil(){}  
  13.       
  14.     /** 
  15.      * 对象转换成json字符串 
  16.      * @param obj  
  17.      * @return  
  18.      */  
  19.     public static String toJson(Object obj) {  
  20.         Gson gson = new Gson();  
  21.         return gson.toJson(obj);  
  22.     }  
  23.   
  24.     /** 
  25.      * json字符串转成对象 
  26.      * @param str   
  27.      * @param type 
  28.      * @return  
  29.      */  
  30.     public static <T> T fromJson(String str, Type type) {  
  31.         Gson gson = new Gson();  
  32.         return gson.fromJson(str, type);  
  33.     }  
  34.   
  35.     /** 
  36.      * json字符串转成对象 
  37.      * @param str   
  38.      * @param type  
  39.      * @return  
  40.      */  
  41.     public static <T> T fromJson(String str, Class<T> type) {  
  42.         Gson gson = new Gson();  
  43.         return gson.fromJson(str, type);  
  44.     }  
  45.   
  46. }  

 2. Person.java

Java代码  技术分享
  1. package com.snail.json;  
  2.   
  3. public class Person {  
  4.     private int id;  
  5.     private String name;  
  6.       
  7.     public int getId() {  
  8.         return id;  
  9.     }  
  10.     public void setId(int id) {  
  11.         this.id = id;  
  12.     }  
  13.     public String getName() {  
  14.         return name;  
  15.     }  
  16.     public void setName(String name) {  
  17.         this.name = name;  
  18.     }  
  19.       
  20. }  

 3. Test.java

Java代码  技术分享
  1. package com.snail.json;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7. import java.util.Map.Entry;  
  8.   
  9. import com.google.gson.reflect.TypeToken;  
  10.   
  11. public class Test {  
  12.       
  13.     /** 
  14.      * 一般对象的转换 
  15.      */  
  16.     public static void objectToJson(){  
  17.         Person person = new Person();  
  18.         person.setId(1);  
  19.         person.setName("one");  
  20.          //javabean转换成json字符串  
  21.         String jsonStr = JsonUtil.toJson(person);  
  22.         System.out.println(jsonStr);  
  23.           
  24.         //json字符串转换成javabean  
  25.         Person newPerson = JsonUtil.fromJson(jsonStr, Person.class);  
  26.         System.out.println(person == newPerson);  
  27.         System.out.println(newPerson.getId()+","+newPerson.getName());  
  28.     }  
  29.       
  30.     /** 
  31.      * 复合结构数据转换(List) 
  32.      */  
  33.     public static void listToJson(){  
  34.         Person person1 = new Person();  
  35.         person1.setId(1);  
  36.         person1.setName("one");  
  37.           
  38.         Person person2 = new Person();  
  39.         person2.setId(2);  
  40.         person2.setName("two");  
  41.           
  42.         List<Person> list = new ArrayList<Person>();  
  43.         list.add(person1);  
  44.         list.add(person2);  
  45.           
  46.         //javabean转换成json字符串  
  47.         String jsonStr = JsonUtil.toJson(list);  
  48.         System.out.println(jsonStr);  
  49.           
  50.           
  51.         //json字符串转换成javabean对象  
  52.         List<Person> rtn = JsonUtil.fromJson(jsonStr, new TypeToken<List<Person>>(){}.getType());  
  53.         for(Person person : rtn){  
  54.             System.out.println(person.getId()+","+person.getName());  
  55.         }  
  56.     }  
  57.       
  58.     /** 
  59.      * 复合结构数据转换(Map) 
  60.      */  
  61.     public static void mapToJson(){  
  62.         Person person1 = new Person();  
  63.         person1.setId(1);  
  64.         person1.setName("one");  
  65.         Person person2 = new Person();  
  66.         person2.setId(2);  
  67.         person2.setName("two");  
  68.           
  69.         Map<Integer,Person> map = new HashMap<Integer,Person>();  
  70.         map.put(person1.getId(), person1);  
  71.         map.put(person2.getId(), person2);  
  72.           
  73.          //javabean转换成json字符串  
  74.         String jsonStr = JsonUtil.toJson(map);  
  75.         System.out.println(jsonStr);  
  76.           
  77.         //json字符串转换成Map对象  
  78.         Map<Integer,Person> rtn = JsonUtil.fromJson(jsonStr, new TypeToken<Map<Integer,Person>>(){}.getType());  
  79.         for(Entry<Integer, Person> entry : rtn.entrySet()){  
  80.             Integer key = entry.getKey();  
  81.             Person newPerson = entry.getValue();  
  82.             System.out.println("key:"+key+","+newPerson.getId()+","+newPerson.getName());  
  83.         }  
  84.     }  
  85.       
  86.   
  87.     public static void main(String[] args) {  
  88.         objectToJson();  
  89.         System.out.println("****************************");  
  90.         listToJson();  
  91.         System.out.println("****************************");  
  92.         mapToJson();  
  93.     }  
  94.       
  95.    
  96.   

以上是关于使用Google的Gson实现对象和json字符串之间的转换的主要内容,如果未能解决你的问题,请参考以下文章

json和gson的区别

使用google-gson类库解析json文件

Json多层对象访问

Android的Gson的使用方法,实现Json结构间相互转换

Json转换工具类(基于google的Gson和阿里的fastjson)

Gson的学习与使用