• 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);

        }

    }

     

     
     
     
     
     
  • 相关阅读:
    2020Python练习九——函数的基本应用
    【2020Python修炼记15】Python语法入门—函数的基本使用
    2020Python练习八——文件处理3—b模式的文件读写操作
    hdu4565
    自己的变化
    乒乓球小组赛的准备
    http://codeforces.com/gym/100623/attachments H题
    http://codeforces.com/gym/100623/attachments E题
    2016年省赛 G Triple Nim
    2013年山东省赛F题 Mountain Subsequences
  • 原文地址:https://www.cnblogs.com/cugwx/p/3794918.html
Copyright © 2020-2023  润新知