zoukankan      html  css  js  c++  java
  • Google Gson解析Json数据应用实例

    转自:http://lixigao449778967.blog.163.com/blog/static/24985164201269105928783/

    1.需要的Jar包

        1) Google Gson(gson-xxx.jar)下载地址:http://code.google.com/p/google-gson/downloads/list

        2)JUnit4

    2. 应用实例代码

        下载地址:http://download.csdn.net/source/3499627

    包括如下类:

    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

    package com.lupeng.javase.json.util;

     

    import java.lang.reflect.Type;

    import java.util.Date;

    import com.google.gson.JsonElement;

    import com.google.gson.JsonPrimitive;

    import com.google.gson.JsonSerializationContext;

    import com.google.gson.JsonSerializer;

     

    /**

     * 日期解序列实用工具类

     * @author Lupeng

     * @date   2011-08-06

     */

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

        @Override

        public JsonElement serialize(Date date, Type type,

               JsonSerializationContext content) {

           return new JsonPrimitive(date.getTime());

        }

     

    }

    DateDeserializerUtils.java

    package com.lupeng.javase.json.util;

     

    import java.lang.reflect.Type;

    import com.google.gson.JsonDeserializationContext;

    import com.google.gson.JsonDeserializer;

    import com.google.gson.JsonElement;

    import com.google.gson.JsonParseException;

    /**

     * 日期序列化实用工具类

     * @author Lupeng

     * @date   2011-08-06

     */

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

        @Override

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

               JsonDeserializationContext context) throws JsonParseException {

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

        }

     

    }

     

    3)测试类GsonTester.java

    package com.lupeng.javase.apps.json;

     

    import java.text.DateFormat;

    import java.util.ArrayList;

    import java.util.Date;

    import java.util.HashMap;

    import java.util.List;

    import java.util.Map;

     

    import org.junit.Before;

    import org.junit.Test;

     

    import com.google.gson.Gson;

    import com.google.gson.GsonBuilder;

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

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

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

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

     

    /**

     * Google Gson解析Json数据实例

     *

     * 1.Bean、Json转换          testBeanJson()

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

     * 3.泛型List、Json相互转换 testGenericList2Json()

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

     * 5.泛型Map、Json相互转换 testGenericMap2Json()

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

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

     *                           testDateGenericListJson()

     *

     * @author Lupeng

     * @create 2011-08-05

     * @modify 2011-08-06

     */

    @SuppressWarnings("unchecked")

    public class GsonTester {

        private Gson gson = null;

        private GsonBuilder gsonBuilder = null;

       

        @Before

        public void setUp() {

           gson = new Gson();

           gsonBuilder = new GsonBuilder();

        }

        /**

         * JavaBean、Json相互转换

         */

        @Test

        public void testBeanJson() {

           JavaBean bean = new JavaBean("1001""scott", 20, "TL");

          

           // Bean -> Json

           String json = gson.toJson(bean);

           System.out.println(json);

          

           // Json -> Bean

           bean = gson.fromJson(json, JavaBean.class);

           System.out.println(bean);

        }

       

        /**

         * List转换成Json字符串

         */

        @Test

        public void testList2Json() {

           // List

           List list = new ArrayList();

           for(int i = 0; i < 5; i++) {

               list.add("element" + i);

           }

           System.out.println(list);

          

           // List -> Json

           String json = gson.toJson(list);

           System.out.println(json);

        }

       

        /**

         * 泛型List、Json相互转换

         */

        @Test

        public void testGenericListJson() {

           // 泛型List

           List<JavaBean> list = new ArrayList<JavaBean>();

           for(int i = 0; i < 3; i++) {

               JavaBean user = new JavaBean("100" + i, "name" + i, 20 + i, "BJ" + i);

               list.add(user);

           }

           System.out.println(list);

          

           // 泛型List -> Json

           java.lang.reflect.Type type =

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

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

           System.out.println(json);  

          

           // Json -> 泛型List

           List<JavaBean> users = gson.fromJson(json.toString(), type);

           System.out.println(users);

        }

       

        /**

         * Map转换成Json字符串

         */

        @Test

        public void testMap2Json() {

           // Map数据

           Map map = new HashMap();

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

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

           map.put("age", 20);

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

           System.out.println(map);

          

           // Map -> Json

           String json = gson.toJson(map);

           System.out.println(json);

        }

       

        /**

         * 泛型Map、Json相互转换

         */

        @Test

        public void testGenericMapJson() {

           // 泛型Map数据

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

           for(int i = 0; i < 5; i++) {

               JavaBean user = new JavaBean("100" + i, "name" + i, 20 + i, "LN" + i);

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

           }

           System.out.println(map);

          

           // 泛型Map -> Json

           java.lang.reflect.Type type =

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

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

           System.out.println(json);  

          

           // Json -> Map

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

           System.out.println(users);

          

        }

       

        /**

         * 带日期类型Bean、Json相互转换

         */

        @Test

        public void testDateBeanJson() {

           // 日期Bean数据

           DateBean bean = new DateBean("1001""scott", 20, new Date());

          

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

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

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

           String json = gson.toJson(bean);

           System.out.println(json);

          

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

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

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

           java.lang.reflect.Type type =

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

           DateBean b = gson.fromJson(json, type);

           System.out.println(b);

        }

        /**

         * 泛型日期List、Json相互转换

         */

        @Test

        public void testDateGenericListJson() {

           // 泛型日期List

           List<DateBean> list = new ArrayList<DateBean>();

           for(int i = 0; i < 3; i++) {

               DateBean user = new DateBean("100" + i, "name" + i, 20 + i, new Date());

               list.add(user);

           }

           System.out.println(list);

          

           // 泛型日期List -> Json

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

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

           java.lang.reflect.Type type =

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

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

           System.out.println(json);  

          

           // Json -> 泛型日期List

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

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

           List<DateBean> users = gson.fromJson(json.toString(), type);

           System.out.println(users);

        }

    }

     

     
     
     
     
     
  • 相关阅读:
    Hibernate中使用@Lob 注解保存String[] 问题
    具体解释Java虚拟机类载入
    POJ 2631 Roads in the North(树的直径)
    MySQL远程訪问的两个问题
    org.hibernate.LazyInitializationException could not initialize proxy-no Session的解决
    博客搬家啦!
    hdu 5015 233 Matrix (矩阵高速幂)
    Flink内存管理源代码解读之基础数据结构
    UML图与机房收费系统实例
    TextView设置成仅仅读
  • 原文地址:https://www.cnblogs.com/cugwx/p/3794918.html
Copyright © 2011-2022 走看看