Chinaunix首页 | 论坛 | 博客
  • 博客访问: 352996
  • 博文数量: 88
  • 博客积分: 1673
  • 博客等级: 上尉
  • 技术积分: 934
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-20 13:51
文章分类

全部博文(88)

文章存档

2016年(1)

2015年(4)

2014年(3)

2013年(7)

2012年(11)

2011年(1)

2009年(61)

我的朋友

分类: Java

2012-10-17 11:06:57

gson较之Jackson方便:
1、下载gson.jar包
  第二步,进行转化.Gson这个类是其中的关键,它负责来进行转化java对象和json.将对象转化为json的格式,使用方法toJson(),这个 方法有几个不同的用法.对于比较简单的对象,比如一个数组,或者一个list,你可以只将要转化的java对象作为参数,可以如果你的对象的格式蛮复杂, 那么,你就需要另一个参数来描述一个java对象的结构,这另一个参数可以是Type或者是Class,它的建立方法也很简单,比如我想把一个类型为 List>>类型的java对象obj转化为json的格式,你可以这么写

点击(此处)折叠或打开

  1. Gson gson = new Gson;
  2. String json = gson.toJson(obj, new TypeToken<List<List<Map<String, String>>>(){}
  3. .getType());// to Json
  4. List<List<Map<String, String>>> obj2 = gson.from(obj, new TypeToken<List<List<Map<String, String>>>(){}.getType());
具体的其他示例转自:

1.须要的Jar包

  1) Google Gson(gson-xxx.jar)下载地址:

    2)JUnit4

2. 应用实例代码

    下载地址:

包含如下类: 1)通俗JavaBean类/带日期属性的JavaBean类:JavaBean.java/DateBean.java
2)日期序列/反序列对象类:DateSerializerUtils.java、DateDeserializerUtils.java
3)测试类GsonTester.java 具体代码:
 1)JavaBean类/DateBean类
JavaBean属性:String id、String name、int age、String addr;

DateBean属性:String id、String name、int age、java.util.Date date;

2)DateSerializerUtils.java


点击(此处)折叠或打开

  1. package
  2. com.lupeng.javase.json.util;

  3.  

  4. import
  5. java.lang.reflect.Type;

  6. import
  7. java.util.Date;

  8. import
  9. com.google.gson.JsonElement;

  10. import
  11. com.google.gson.JsonPrimitive;

  12. import
  13. com.google.gson.JsonSerializationContext;

  14. import
  15. com.google.gson.JsonSerializer;

  16.  

  17. /**

  18.  * 日期解序列实用对象类

  19.  * @author Lupeng

  20.  * @date 2011-08-06

  21.  */

  22. public class
  23. DateSerializerUtils implements
  24. JsonSerializer<java.util.Date>{

  25.     @Override

  26.     public
  27. JsonElement serialize(Date date, Type type,

  28.            JsonSerializationContext content) {

  29.        return new
  30. JsonPrimitive(date.getTime());

  31.     }

  32.  

  33. }
DateDeserializerUtils.java

点击(此处)折叠或打开

  1. package
  2. com.lupeng.javase.json.util;

  3.  

  4. import
  5. java.lang.reflect.Type;

  6. import
  7. com.google.gson.JsonDeserializationContext;

  8. import
  9. com.google.gson.JsonDeserializer;

  10. import
  11. com.google.gson.JsonElement;

  12. import
  13. com.google.gson.JsonParseException;

  14. /**

  15.  * 日期序列化实用对象类

  16.  * @author Lupeng

  17.  * @date 2011-08-06

  18.  */

  19. public class
  20. DateDeserializerUtils implements
  21. JsonDeserializer<java.util.Date>{

  22.     @Override

  23.     public
  24. java.util.Date deserialize(JsonElement json, Type type,

  25.            JsonDeserializationContext context) throws
  26. JsonParseException {

  27.        return new
  28. java.util.Date(json.getAsJsonPrimitive().getAsLong());

  29.     }

  30.  

  31. }

3)测试类GsonTester.java

点击(此处)折叠或打开

  1. package
  2. com.lupeng.javase.apps.json;

  3.  

  4. import
  5. java.text.DateFormat;

  6. import
  7. java.util.ArrayList;

  8. import
  9. java.util.Date;

  10. import
  11. java.util.HashMap;

  12. import
  13. java.util.List;

  14. import
  15. java.util.Map;

  16.  

  17. import
  18. org.junit.Before;

  19. import
  20. org.junit.Test;

  21.  

  22. import
  23. com.google.gson.Gson;

  24. import
  25. com.google.gson.GsonBuilder;

  26. import
  27. com.lupeng.javase.json.bean.DateBean;

  28. import
  29. com.lupeng.javase.json.bean.JavaBean;

  30. import
  31. com.lupeng.javase.json.util.DateDeserializerUtils;

  32. import
  33. com.lupeng.javase.json.util.DateSerializerUtils;

  34.  

  35. /**

  36.  * Google Gson解析Json数据实例

  37.  *

  38.  * 1.Bean、Json转换 testBeanJson()

  39.  * 2.List -> Json转换 testList2Json()

  40.  * 3.泛型List、Json彼此转换 testGenericList2Json()

  41.  * 4.Map -> Json转换 testMap2Json()

  42.  * 5.泛型Map、Json彼此转换 testGenericMap2Json()

  43.  * 6.带日期属性Bean、Json转换 testDateBeanJson()

  44.  * 7.带日期属性泛型List、Json转换

  45.  *
  46. testDateGenericListJson()

  47.  *

  48.  * @author Lupeng

  49.  * @create
  50. 2011-08-05

  51.  * @modify
  52. 2011-08-06

  53.  */

  54. @SuppressWarnings("unchecked"

  55. public class
  56. GsonTester {

  57.     private
  58. Gson gson = null;

  59.     private
  60. GsonBuilder gsonBuilder = null;

  61.    

  62.     @Before

  63.     public void
  64. setUp() {

  65.        gson = new
  66. Gson();

  67.        gsonBuilder = new
  68. GsonBuilder();

  69.     }

  70.     /**

  71.      * JavaBean、Json彼此转换

  72.      */

  73.     @Test

  74.     public void
  75. testBeanJson() {

  76.        JavaBean bean = new
  77. JavaBean("1001""scott"
  78. 20, "TL";

  79.       

  80.        // Bean -> Json

  81.        String json = gson.toJson(bean);

  82.        System.out.println(json);

  83.       

  84.        // Json -> Bean

  85.        bean = gson.Json(json,
  86. JavaBean.class);

  87.        System.out.println(bean);

  88.     }

  89.    

  90.     /**

  91.      * List转换成Json字符串

  92.      */

  93.     @Test

  94.     public void
  95. testList2Json() {

  96.        // List

  97.        List list = new
  98. ArrayList();

  99.        for(int i
  100. = 0; i < 5; i++{

  101.            list.add("element" +
  102. i);

  103.        }

  104.        System.out.println(list);

  105.       

  106.        // List -> Json

  107.        String json = gson.toJson(list);

  108.        System.out.println(json);

  109.     }

  110.    

  111.     /**

  112.      * 泛型List、Json彼此转换

  113.      */

  114.     @Test

  115.     public void
  116. testGenericListJson() {

  117.        // 泛型List

  118.        List<JavaBean> list = new
  119. ArrayList<JavaBean>();

  120.        for(int i
  121. = 0; i < 3; i++{

  122.            JavaBean user = new
  123. JavaBean("100" +
  124. i, "name" +
  125. i, 20 + i, "BJ" + i);

  126.            list.add(user);

  127.        }

  128.        System.out.println(list);

  129.       

  130.        // 泛型List
  131. -> Json

  132.        java.lang.reflect.Type type =

  133.            new
  134. com.google.gson.reflect.TypeToken<List<JavaBean>>(){}.getType();

  135.        String json = gson.toJson(list,
  136. type);

  137.        System.out.println(json);

  138.       

  139.        // Json -> 泛型List

  140.        List<JavaBean> users = gson.Json(json.toString(),
  141. type);

  142.        System.out.println(users);

  143.     }

  144.    

  145.     /**

  146.      * Map转换成Json字符串

  147.      */

  148.     @Test

  149.     public void
  150. testMap2Json() {

  151.        // Map数据

  152.        Map map = new
  153. HashMap();

  154.        map.put("id""1001";

  155.        map.put("name""scott";

  156.        map.put("age"
  157. 20);

  158.        map.put("addr""BJ";

  159.        System.out.println(map);

  160.       

  161.        // Map -> Json

  162.        String json = gson.toJson(map);

  163.        System.out.println(json);

  164.     }

  165.    

  166.     /**

  167.      * 泛型Map、Json彼此转换

  168.      */

  169.     @Test

  170.     public void
  171. testGenericMapJson() {

  172.        // 泛型Map数据

  173.        Map<String, JavaBean> map = new
  174. HashMap<String, JavaBean>();

  175.        for(int i
  176. = 0; i < 5; i++{

  177.            JavaBean user = new
  178. JavaBean("100" +
  179. i, "name" +
  180. i, 20 + i, "LN" + i);

  181.            map.put("100" +
  182. i, user);

  183.        }

  184.        System.out.println(map);

  185.       

  186.        // 泛型Map
  187. -> Json

  188.        java.lang.reflect.Type type =

  189.            new
  190. com.google.gson.reflect.TypeToken<Map<String,
  191. JavaBean>>(){}.getType();

  192.        String json = gson.toJson(map,
  193. type);

  194.        System.out.println(json);

  195.       

  196.        // Json -> Map

  197.        Map<String, JavaBean> users = gson.Json(json.toString(),
  198. type);

  199.        System.out.println(users);

  200.       

  201.     }

  202.    

  203.     /**

  204.      * 带日期类型Bean、Json彼此转换

  205.      */

  206.     @Test

  207.     public void
  208. testDateBeanJson() {

  209.        // 日期Bean数据

  210.        DateBean bean = new
  211. DateBean("1001""scott"
  212. 20, new Date());

  213.       

  214.        // Bean(带日期属性)
  215. -> Json

  216.        gson = gsonBuilder.registerTypeAdapter(java.util.Date.class,

  217.               new
  218. DateSerializerUtils()).setDateFormat(DateFormat.LONG).create();

  219.        String json = gson.toJson(bean);

  220.        System.out.println(json);

  221.       

  222.        // Json -> Bean(带日期类型属性)

  223.        gson = gsonBuilder.registerTypeAdapter(java.util.Date.class,

  224.               new
  225. DateDeserializerUtils()).setDateFormat(DateFormat.LONG).create();

  226.        java.lang.reflect.Type type =

  227.            new
  228. com.google.gson.reflect.TypeToken<DateBean>(){}.getType();

  229.        DateBean b = gson.Json(json,
  230. type);

  231.        System.out.println(b);

  232.     }

  233.     /**

  234.      * 泛型日期List、Json彼此转换

  235.      */

  236.     @Test

  237.     public void
  238. testDateGenericListJson() {

  239.        // 泛型日期List

  240.        List<DateBean> list = new
  241. ArrayList<DateBean>();

  242.        for(int i
  243. = 0; i < 3; i++{

  244.            DateBean user = new
  245. DateBean("100" +
  246. i, "name" +
  247. i, 20 + i, new
  248. Date());

  249.            list.add(user);

  250.        }

  251.        System.out.println(list);

  252.       

  253.        // 泛型日期List
  254. -> Json

  255.        gson = gsonBuilder.registerTypeAdapter(java.util.Date.class,

  256.               new
  257. DateSerializerUtils()).setDateFormat(DateFormat.LONG).create();

  258.        java.lang.reflect.Type type =

  259.            new
  260. com.google.gson.reflect.TypeToken<List<DateBean>>(){}.getType();

  261.        String json = gson.toJson(list,
  262. type);

  263.        System.out.println(json);

  264.       

  265.        // Json -> 泛型日期List

  266.        gson = gsonBuilder.registerTypeAdapter(java.util.Date.class,

  267.               new
  268. DateDeserializerUtils()).setDateFormat(DateFormat.LONG).create();

  269.        List<DateBean> users = gson.Json(json.toString(),
  270. type);

  271.        System.out.println(users);

  272.     }

  273. }


阅读(5035) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~