`

Google Gson应用

阅读更多

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);
 
    }
 
}
分享到:
评论

相关推荐

    谷歌 Gson2.8.0 依赖包、文档和源码

    谷歌Gson库是Java开发中广泛使用的JSON解析和序列化工具,版本2.8.0是其一个稳定且功能丰富的版本。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。...

    Google gson jar包

    标题"Google gson jar包"暗示了我们讨论的是Google Gson库的Java档案文件(JAR),它包含了所有必要的类和资源,使开发者能够在项目中直接使用Gson功能。JAR文件通常在Java开发中用于封装库,以便在应用程序中作为...

    om.google.gson.Gson Gson maven依赖

    Gson是Google开发的一款Java语言编写...无论是在Android开发还是服务器端Java应用中,Gson都能提供强大的支持,帮助开发者高效地处理JSON数据。了解并熟练掌握Gson的使用,对于提升Java开发中的数据处理能力至关重要。

    Google Gson解析Json数据应用实例

    这个“Google Gson解析Json数据应用实例”旨在深入探讨Gson库的使用,帮助开发者更好地理解和运用它来处理JSON数据。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也...

    Google gson

    Google Gson 是一个强大的Java库,由Google开发,用于在Java对象和JSON数据之间进行相互转换。这个库使得Java对象能够轻松地被序列化为JSON格式的字符串,同时也能将JSON字符串解析为相应的Java对象,极大地简化了...

    Google - gson

    谷歌的Gson库是一款强大的Java库,用于将Java对象转换为JSON(JavaScript Object Notation)格式,反之亦然。这个库使得在Java应用程序中处理JSON数据变得极其简单,尤其适用于那些需要在网络通信、存储或者显示JSON...

    com.google.gson.Gson-2.8.2

    Gson是Google开发的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。它的全称是Google Gson,版本2.8.2是该库的一个稳定版本,提供了高效的性能和丰富的功能。在这个版本中,Gson库继续优化了其核心功能,...

    google-gson-2.2.4.zip

    谷歌的Gson库是Java开发人员用来在JSON和Java对象之间进行序列化和反序列化的强大工具。这个"google-gson-2.2.4.zip"压缩包包含了Gson库的2.2.4版本,这是一个广泛使用的稳定版本,适用于各种项目需求。Gson库允许...

    Google Gson 2.8.4 - 谷歌的Json解析包

    Google Gson是谷歌开发的一款强大的JSON解析库,它允许开发者在Java对象和JSON数据之间进行相互转换。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛应用于Web服务和应用程序之间的数据通信...

    Eclipse下使用Google Gson解析Json数据示例+Android Studio下使用Google Gson解析Json数据示例

    这时,Google的Gson库就发挥了重要作用。本文将详细介绍如何在Eclipse和Android Studio环境下使用Gson库来解析Json数据。 首先,我们来看Eclipse下的Gson使用示例。在Eclipse中,你需要先引入Gson库。这可以通过在...

    Google发布的强大的gson包

    JSON被广泛应用于Web服务和客户端之间的数据交互,而Gson库则为Java开发者提供了一个便捷的工具来处理这种数据。 Gson的核心功能包括: 1. **对象转JSON**:通过`Gson().toJson(object)`方法,你可以将任何Java...

    googlegson

    谷歌的Gson库是一个强大的Java库,它允许开发者将Java对象转换为JSON格式的字符串,同时也能将JSON数据解析回等效的Java对象。这个工具类对于处理JSON数据,尤其是在服务器端与客户端之间的数据交换中,显得尤为重要...

    google-gson-2.2.4

    总之,"google-gson-2.2.4"是一个强大的工具,它简化了Java应用程序与JSON数据之间的交互,适用于各种Web服务、移动应用和服务器端开发场景。无论你是进行数据传输、本地持久化还是与其他系统交换数据,Gson都是一个...

    Google-gson-2.8.2

    标题 "Google-gson-2.8.2" 指的是 Google Gson 库的一个特定版本,即 2.8.2。Gson 是一个由 Google 开发的 Java 类库,它的主要功能是处理 JSON(JavaScript Object Notation)数据格式。JSON 是一种轻量级的数据...

    google json: gson

    谷歌的Gson库是Java开发中的一个强大工具,专门用于JSON对象和Java对象之间的相互转换。这个库使得在Java应用程序中处理JSON数据变得极其简单,无论是将Java对象序列化为JSON字符串,还是将JSON字符串反序列化为Java...

    Android Studio下使用Google Gson解析Json数据示例

    Google Gson库是Java平台上的一个强大工具,用于将Java对象转换为对应的JSON表示,反之亦然。在Android Studio中,Gson库可以帮助我们方便地解析和生成JSON数据。本篇文章将详细介绍如何在Android Studio环境下使用...

    com.google.gson.Gson(4个jar包)莫名被加了积分,回归0

    在Java开发中,`com.google.gson.Gson`是一个广泛使用的库,用于将Java对象转换为JSON字符串,反之亦然。在你的问题中,你提到“莫名被加了积分,回归0”,这可能指的是某个版本更新或者配置更改导致了Gson库在你的...

    google-gson-2.1 jar包 + 使用教程.pdf

    教程还可能包含实践示例,帮助你更好地理解和应用Gson。 总的来说,Gson是一个强大的JSON处理库,它简化了Java和JSON之间的数据转换,对于任何需要与JSON交互的Java项目都是不可或缺的工具。通过阅读提供的教程,你...

    Eclipse下使用Google Gson解析Json数据示例

    例如,从网络获取JSON数据后,可以使用Gson将其转换为Java对象,然后在应用中进行处理。 在Eclipse中进行调试时,可以利用Logcat输出JSON字符串或者转换后的Java对象,以便检查数据是否正确解析。 总的来说,...

    google-gson2.2.4

    **谷歌Gson 2.2.4:Java与JSON之间的桥梁** 谷歌Gson库是一个强大的工具,它在Java开发中扮演着重要的角色,特别是在处理JSON数据时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁、易...

Global site tag (gtag.js) - Google Analytics