zoukankan      html  css  js  c++  java
  • 使用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.   
  • 相关阅读:
    Python自动发邮件-yagmail库
    使用Network Emulator Toolkit工具模拟网络丢包测试(上)
    Fiddler实战之使用Fiddler模拟弱网环境(限速)
    Jmeter接口测试之SSHCommand测试Linux服务器资源文件信息
    Fiddler实战之将抓到接口导入Jmeter接口测试
    Could not get lock /var/lib/dpkg/lock
    OPMS是什么?
    Docker是什么?
    Docker容器中启动OPMS项目
    Docker容器部署Tomcat服务器
  • 原文地址:https://www.cnblogs.com/1995hxt/p/5325952.html
Copyright © 2011-2022 走看看