json对象解析

来源:未知 责任编辑:责任编辑 发表时间:2013-08-27 15:59 点击:

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

 

    }

 

}

 

本文出自 “技术人生” 博客,请务必保留此出处http://zhaohaiyang.blog.51cto.com/2056753/1092917

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Java编程语言的八大优点
    • JVM对象生命周期详细介绍
    • Java平台上的CRM系统
    • Java 算数测试小程序
    • Java环境 使用Resin在NT环境下配置JSP环境
    • Command(命令模式)
    • Java 一个简单的画图程序
    • Java 日历的小程序
    • Java 统计代码的小工具
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1