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

http://penghuaiyi.iteye.com/blog/1922632


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.   
  97. }  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
包含以下java源文件: com.google.gson.DefaultDateTypeAdapter.class com.google.gson.ExclusionStrategy.class com.google.gson.FieldAttributes.class com.google.gson.FieldNamingPolicy.class com.google.gson.FieldNamingStrategy.class com.google.gson.Gson.class com.google.gson.GsonBuilder.class com.google.gson.InstanceCreator.class com.google.gson.JsonArray.class com.google.gson.JsonDeserializationContext.class com.google.gson.JsonDeserializer.class com.google.gson.JsonElement.class com.google.gson.JsonIOException.class com.google.gson.JsonNull.class com.google.gson.JsonObject.class com.google.gson.JsonParseException.class com.google.gson.JsonParser.class com.google.gson.JsonPrimitive.class com.google.gson.JsonSerializationContext.class com.google.gson.JsonSerializer.class com.google.gson.JsonStreamParser.class com.google.gson.JsonSyntaxException.class com.google.gson.LongSerializationPolicy.class com.google.gson.TreeTypeAdapter.class com.google.gson.TypeAdapter.class com.google.gson.TypeAdapterFactory.class com.google.gson.annotations.Expose.class com.google.gson.annotations.SerializedName.class com.google.gson.annotations.Since.class com.google.gson.annotations.Until.class com.google.gson.internal.ConstructorConstructor.class com.google.gson.internal.Excluder.class com.google.gson.internal.JsonReaderInternalAccess.class com.google.gson.internal.LazilyParsedNumber.class com.google.gson.internal.LinkedTreeMap.class com.google.gson.internal.ObjectConstructor.class com.google.gson.internal.Primitives.class com.google.gson.internal.Streams.class com.google.gson.internal.UnsafeAllocator.class com.google.gson.internal.bind.ArrayTypeAdapter.class com.google.gson.internal.bind.CollectionTypeAdapterFactory.class com.google.gson.internal.bind.DateTypeAdapter.class com.google.gson.internal.bind.JsonTreeReader.class com.google.gson.internal.bind.JsonTreeWriter.class com.google.gson.internal.bind.MapTypeAdapterFactory.class com.google.gson.internal.bind.ObjectTypeAdapter.class com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.class com.google.gson.internal.bind.SqlDateTypeAdapter.class com.google.gson.internal.bind.TimeTypeAdapter.class com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.class com.google.gson.internal.bind.TypeAdapters.class com.google.gson.reflect.TypeToken.class com.google.gson.stream.JsonReader.class com.google.gson.stream.JsonScope.class com.google.gson.stream.JsonToken.class com.google.gson.stream.JsonWriter.class com.google.gson.stream.MalformedJsonException.class

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值