`

google gson学习

阅读更多

1.简单的处理list和map

Java代码 复制代码 收藏代码
  1. Gson gson = new Gson();   
  2. List testList = new ArrayList();   
  3. testList.add("first");   
  4. testList.add("second");   
  5. String listToJson = gson.toJson(testList);   
  6. System.out.println(listToJson);        
  7. //prints ["first","second"]   
  8.   
  9. Map testMap = new HashMap();   
  10. testMap.put("id""id.first");   
  11. testMap.put("name","name.second");   
  12. String mapToJson = gson.toJson(testMap);   
  13. System.out.println(mapToJson);     
  14. //prints {"id":"id.first","name":"name.second"}  
		Gson gson = new Gson();
		List testList = new ArrayList();
		testList.add("first");
		testList.add("second");
		String listToJson = gson.toJson(testList);
		System.out.println(listToJson);		
		//prints ["first","second"]
		
		Map testMap = new HashMap();
		testMap.put("id", "id.first");
		testMap.put("name","name.second");
		String mapToJson = gson.toJson(testMap);
		System.out.println(mapToJson);	
		//prints {"id":"id.first","name":"name.second"}

 2.处理带泛型的集合

Java代码 复制代码 收藏代码
  1. List<TestBean> testBeanList = new ArrayList<TestBean>();   
  2. TestBean testBean = new TestBean();   
  3. testBean.setId("id");   
  4. testBean.setName("name");   
  5. testBeanList.add(testBean);   
		List<TestBean> testBeanList = new ArrayList<TestBean>();
		TestBean testBean = new TestBean();
		testBean.setId("id");
		testBean.setName("name");
		testBeanList.add(testBean);
		
Java代码 复制代码 收藏代码
  1. java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<TestBean>>() {   
  2. }.getType();   
  3. String beanListToJson = gson.toJson(testBeanList,type);   
  4. System.out.println(beanListToJson);   
  5. //prints [{"id":"id","name":"name"}]   
  6.   
  7. List<TestBean> testBeanListFromJson = gson.fromJson(beanListToJson, type);   
  8. System.out.println(testBeanListFromJson);   
  9. //prints [TestBean@1ea5671[id=id,name=name,birthday=<null>]]  
		java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<TestBean>>() {
		}.getType();
		String beanListToJson = gson.toJson(testBeanList,type);
		System.out.println(beanListToJson);
		//prints [{"id":"id","name":"name"}]
		
		List<TestBean> testBeanListFromJson = gson.fromJson(beanListToJson, type);
		System.out.println(testBeanListFromJson);
		//prints [TestBean@1ea5671[id=id,name=name,birthday=<null>]]

map等其他集合类型同上

 

 

3.Date类型转化

 

先写工具类

 

Java代码 复制代码 收藏代码
  1. import java.lang.reflect.Type;   
  2.   
  3. import com.google.gson.JsonDeserializationContext;   
  4. import com.google.gson.JsonDeserializer;   
  5. import com.google.gson.JsonElement;   
  6. import com.google.gson.JsonParseException;   
  7.   
  8. public class UtilDateDeserializer implements JsonDeserializer<java.util.Date> {   
  9.   
  10.     @Override  
  11.     public java.util.Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)   
  12.             throws JsonParseException {   
  13.         return new java.util.Date(json.getAsJsonPrimitive().getAsLong());   
  14.     }   
  15. }  
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;

public class UtilDateDeserializer implements JsonDeserializer<java.util.Date> {

	@Override
	public java.util.Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
			throws JsonParseException {
		return new java.util.Date(json.getAsJsonPrimitive().getAsLong());
	}
}

 

Java代码 复制代码 收藏代码
  1. import java.lang.reflect.Type;   
  2.   
  3. import com.google.gson.JsonElement;   
  4. import com.google.gson.JsonPrimitive;   
  5. import com.google.gson.JsonSerializationContext;   
  6. import com.google.gson.JsonSerializer;   
  7.   
  8. public class UtilDateSerializer implements JsonSerializer<java.util.Date> {   
  9.   
  10.     @Override  
  11.     public JsonElement serialize(java.util.Date src, Type typeOfSrc,      
  12.             JsonSerializationContext context) {      
  13.         return new JsonPrimitive(src.getTime());      
  14.     }      
  15.   
  16. }  
import java.lang.reflect.Type;

import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;

public class UtilDateSerializer implements JsonSerializer<java.util.Date> {

	@Override
    public JsonElement serialize(java.util.Date src, Type typeOfSrc,   
            JsonSerializationContext context) {   
        return new JsonPrimitive(src.getTime());   
    }   

}

 

Java代码 复制代码 收藏代码
  1. /**  
  2.      * 序列化方法  
  3.      * @param bean  
  4.      * @param type  
  5.      * @return  
  6.      */  
  7.     public static String bean2json(Object bean, Type type) {   
  8.         Gson gson = new GsonBuilder().registerTypeAdapter(java.util.Date.classnew UtilDateSerializer())   
  9.                 .setDateFormat(DateFormat.LONG).create();   
  10.         return gson.toJson(bean);   
  11.     }   
  12.   
  13.     /**  
  14.      * 反序列化方法  
  15.      * @param json  
  16.      * @param type  
  17.      * @return  
  18.      */  
  19.     public static <T> T json2bean(String json, Type type) {   
  20.         Gson gson = new GsonBuilder().registerTypeAdapter(java.util.Date.classnew UtilDateDeserializer())   
  21.                 .setDateFormat(DateFormat.LONG).create();   
  22.         return gson.fromJson(json, type);   
  23.     }  
/**
	 * 序列化方法
	 * @param bean
	 * @param type
	 * @return
	 */
	public static String bean2json(Object bean, Type type) {
		Gson gson = new GsonBuilder().registerTypeAdapter(java.util.Date.class, new UtilDateSerializer())
				.setDateFormat(DateFormat.LONG).create();
		return gson.toJson(bean);
	}

	/**
	 * 反序列化方法
	 * @param json
	 * @param type
	 * @return
	 */
	public static <T> T json2bean(String json, Type type) {
		Gson gson = new GsonBuilder().registerTypeAdapter(java.util.Date.class, new UtilDateDeserializer())
				.setDateFormat(DateFormat.LONG).create();
		return gson.fromJson(json, type);
	}

 

 

现在开始测试

 

Java代码 复制代码 收藏代码
  1. List<TestBean> testBeanList = new ArrayList<TestBean>();   
  2. TestBean testBean = new TestBean();   
  3. testBean.setId("id");   
  4. testBean.setName("name");   
  5. testBean.setBirthday(new java.util.Date());   
  6. testBeanList.add(testBean);   
  7.   
  8. java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<TestBean>>() {   
  9. }.getType();   
  10. String beanListToJson = bean2json(testBeanList, type);   
  11. System.out.println("beanListToJson:" + beanListToJson);   
  12. //prints [{"id":"id","name":"name","birthday":1256531559390}]   
  13.   
  14. List<TestBean> testBeanListFromJson = json2bean(beanListToJson, type);   
  15. System.out.println(testBeanListFromJson);   
  16. //prints [TestBean@77a7f9[id=id,name=name,birthday=Mon Oct 26 12:39:05 CST 2009]]  
		List<TestBean> testBeanList = new ArrayList<TestBean>();
		TestBean testBean = new TestBean();
		testBean.setId("id");
		testBean.setName("name");
		testBean.setBirthday(new java.util.Date());
		testBeanList.add(testBean);

		java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<TestBean>>() {
		}.getType();
		String beanListToJson = bean2json(testBeanList, type);
		System.out.println("beanListToJson:" + beanListToJson);
		//prints [{"id":"id","name":"name","birthday":1256531559390}]

		List<TestBean> testBeanListFromJson = json2bean(beanListToJson, type);
		System.out.println(testBeanListFromJson);
		//prints [TestBean@77a7f9[id=id,name=name,birthday=Mon Oct 26 12:39:05 CST 2009]]

 

 

后记:对于java.sql.Date的转化同上类似,写两个类用于其序列化和反序列化即可SQLDateDeserializer implements JsonDeserializer<java.sql.Date>

SQLDateSerializer implements JsonSerializer<java.sql.Date>

 

 

 对于GsonBuilder详见:

 http://google-gson.googlecode.com/svn/tags/1.2.3/docs/javadocs/com/google/gson/GsonBuilder.html

 

 

*注:TestBean就是一个带id、name、birthday的javabean,就不在这里贴代码了

分享到:
评论
1 楼 JAVA一小菜 2012-04-18  
为什么我使用这个会中文乱码?

相关推荐

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

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

    利用Google Gson实现JSON字符串和对象之间相互转换

    在Java开发中,数据交换和存储常常涉及到JSON格式。JSON(JavaScript Object Notation)是一种轻...在`hsun_gson`这个压缩包文件中,可能包含了示例源码和Gson的jar包,你可以参考这些资源进一步学习和实践Gson的使用。

    google_gson_2.3.1

    - `gson-2.3.1-sources.jar`:源代码文件,开发者可以通过查看源码深入理解Gson的工作原理,对于调试和学习非常有帮助。 6. 使用示例: ```java import com.google.gson.Gson; import java.util.Date; class ...

    我的gson学习例子

    这个“我的gson学习例子”显然是一份关于如何使用Gson进行JSON操作的学习资料。下面我们将详细探讨Gson库的使用方法和相关知识点。 首先,我们要理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式...

    Google - gson

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

    Google Gson 2.8.4 - 谷歌的Json解析包

    通过学习这些示例,开发者可以快速上手并有效地利用Gson解决实际问题。 在使用Gson时,还需要注意一些最佳实践。比如,为了避免内存泄漏,应避免创建过多的Gson实例,通常推荐使用单例模式。另外,对于敏感数据,要...

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

    在使用教程中,你可能会学习到如何创建Gson实例,如何处理基本类型、集合和自定义类,以及如何处理复杂的JSON结构。此外,还会涉及错误处理、性能优化等方面的技巧。教程还可能包含实践示例,帮助你更好地理解和应用...

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

    在Android开发中,数据交换和存储经常涉及到JSON格式的数据,Google Gson库是一个强大的工具,用于在Java对象...通过学习和熟练掌握Gson,开发者能够更高效地实现数据的序列化和反序列化,从而提升开发效率和代码质量。

    google-gson-2.2.4.zip

    谷歌的Gson库是Android平台上广泛使用的JSON解析和序列化库。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它允许开发者在不同系统之间以文本形式交换数据。Gson库使得Java对象和JSON数据之间的...

    google gson source code

    Gson 2.3.1 的 源代码,对深入学习gson的实现原理有很大的帮助,对gson中标签的使用的研究,有很大的帮助。

    google-gson-2.2.2-release

    `gson-2.2.2-sources.jar`包含了Gson库的源代码,这对于开发者进行调试、学习和扩展Gson功能非常有帮助。你可以查看源码来深入理解其内部实现,甚至可以根据需要修改和优化。 在实际开发中,Gson库经常与网络请求库...

    Gson 枚举类型的统一序列化/反序列化处理

    在Java编程中,枚举类型(Enum)是一种强大的工具,用于定义一组预定义的常量。...通过学习和理解这些示例,你可以更好地理解和应用这种自定义枚举处理策略,使得Gson在处理枚举时更加灵活和适应性强。

    google-gson-2.2.4.jar及多种示例代码

    谷歌的Gson库是一个强大的Java库,用于将Java对象转换为JSON格式的字符串,反之亦然。这个"google-gson-2.2.4.jar"是...通过深入学习和实践这些示例,你可以熟练掌握如何在Java项目中有效地使用Gson库进行JSON操作。

    Google的json数据转换的jar包gson-2.2.4

    Gson是Google提供的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。它的全称为Google Gson,版本号为2.2.4。这个版本的Gson库包含了三个jar包,分别是: 1. `gson-2.2.4.jar`:这是Gson的核心库,包含了...

    Gson-2.8.1的官方jar包合集【gson-2.8.1.jar,gson-2.8.1-sources.jar】

    Gson是Google开发的一款强大的Java库,用于将Java对象转换为JSON格式的字符串,以及将JSON数据解析回等效的Java对象。这个压缩包包含了Gson库的版本2.8.1,它提供了两个主要的组件:`gson-2.8.1.jar`和`gson-2.8.1-...

    Gson-2.2.4.jar包和源代码

    Gson库是由Google提供的一款强大的Java库,它允许开发者在Java对象和JSON数据之间进行无缝的相互转换。Gson-2.2.4.jar包包含了这个版本的Gson库的所有预编译类,使得开发者可以在自己的项目中直接引用,进行JSON操作...

    Android学习笔记--Gson笔记

    在Android开发中,Gson库是一个非常重要的工具,它是由Google提供的用于在Java对象和JSON数据之间进行映射的Java库。这篇“Android学习笔记--Gson笔记”将深入探讨如何利用Gson来处理JSON数据,提升Android应用的...

    gson2.8.0和2.8.6.rar

    Gson是Google开发的一款Java库,它允许将Java对象转换为JSON字符串,同时也能将JSON数据解析回等效的Java对象。在Java开发中,Gson库被广泛应用于数据序列化和反序列化,特别是在网络通信和存储数据时。本篇文章将...

    google-json-gson-master.zip

    Google的Gson库是Java开发中的一个强大工具,主要用于JSON对象和Java对象之间的相互转换。这个"google-json-gson-master.zip"压缩包包含了Gson项目的源码,方便开发者深入理解和定制化使用。JSON(JavaScript Object...

    google专用解析json工具之gson源码

    Gson是Google开发的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。它使得Java对象可以被转换为JSON格式的字符串,同时也可以将JSON文本解析为等效的Java对象。Gson源码提供了深入理解其工作原理的机会,...

Global site tag (gtag.js) - Google Analytics