zoukankan      html  css  js  c++  java
  • Google Gson应用

    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);
    
        }
    
    }
    
  • 相关阅读:
    LeetCode:位运算实现加法
    Java基础教程:多线程基础——内存模型
    Python:笔记(3)——面向对象编程
    Java基础教程:反射基础
    MYSQL:基础——3N范式的表结构设计
    GIT学习笔记(1):创建版本库
    你为什么应该经常访问招聘网站?招聘网站至少有4个方面的价值!
    你为什么应该经常访问招聘网站?招聘网站至少有4个方面的价值!
    MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?
    MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?
  • 原文地址:https://www.cnblogs.com/cyjch/p/2352792.html
Copyright © 2011-2022 走看看