Google Gson解析Json數據應用實例

轉自:http://lixigao449778967.blog.163.com/blog/static/24985164201269105928783/java

1.須要的Jar包json

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

    2)JUnit4ide

2. 應用實例代碼工具

    下載地址:http://download.csdn.net/source/3499627測試

包括以下類:ui

1)普通JavaBean類/帶日期屬性的JavaBean類:JavaBean.java/DateBean.javagoogle

2)日期序列/反序列工具類:DateSerializerUtils.java、DateDeserializerUtils.javaspa

3)測試類GsonTester.java.net

具體代碼:

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

    }

}

相關文章
相關標籤/搜索