`
阿杜杜不是阿木木
  • 浏览: 21501 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Google的Gson处理工具类

 
阅读更多

更新日期:20150902

package com.fdmis.util;
import java.io.StringReader;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.stream.JsonReader;
public class JsonUtil {
	/**
	 * 将JavaBean转化为jsonStr
	 * @param obj
	 * @return
	 */
	public String toStrings(Object obj) {
		Gson gson = new GsonBuilder()
				.disableHtmlEscaping()
				.registerTypeAdapter(java.util.Date.class,new UtilDateSerializer())
				.setDateFormat("yyyy-MM-dd HH:mm:ss").create();
		return gson.toJson(obj);
	}

	/**
	 * 将jsonStr转化为JavaBean
	 * @param <T>
	 * @param json
	 * @param type
	 * @return
	 */
	public <T> T toObj(String json, Type type) {
		//T t = new com.google.gson.reflect.TypeToken<T>() {}.getType();
		Gson gson = new GsonBuilder()
				.disableHtmlEscaping()
				.registerTypeAdapter(java.util.Date.class,new UtilDateDeserializer())
				.setDateFormat("yyyy-MM-dd HH:mm:ss").create();
		return gson.fromJson(json, type);
	}

	/**
	 * 将jsonStr转化成Map<String, String>
	 * @param json
	 * @return
	 */
	public Map<String, String> toMap(String json) {
		JsonReader reader = new JsonReader(new StringReader(json));
		Map<String, String> map = new HashMap<String, String>();
		try {
			reader.beginObject();
			while (reader.hasNext()) {
				map.put(reader.nextName(), reader.nextString());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return map;
	}

	/**
	 * 将jsonStr转化成Map<String, String>
	 * @param result
	 * @return
	 */
	public Map<String, String> getMapData(String result) {

		Map<String, String> map = new HashMap<String, String>();
		Type type = new com.google.gson.reflect.TypeToken<Map<String, String>>() {}.getType();
		map = toObj(result, type);
		return map;
	}

	/**
	 * 将jsonStr转化成List<Map<String, String>>
	 * @param result
	 * @return
	 */
	public List<Map<String, String>> getMapListData(String result) {
		List<Map<String, String>> ml = new ArrayList<Map<String, String>>();
		Type type = new com.google.gson.reflect.TypeToken<List<Map<String, String>>>() {}.getType();
		ml = toObj(result, type);
		return ml;
	}
	
	/**
	 * 序列化日期类型的实现类
	 * @author Administrator
	 *
	 */
	class UtilDateSerializer implements JsonSerializer<java.util.Date> {

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

	}
	
	/**
	 * 反序列化日期类型的实现类
	 * @author Administrator
	 */
	class UtilDateDeserializer implements JsonDeserializer<java.util.Date> {
		public java.util.Date deserialize(JsonElement json, Type typeOfT,
				JsonDeserializationContext context) throws JsonParseException {
			return new java.util.Date(json.getAsJsonPrimitive().getAsLong());
		}
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    Gson包工具类

    Gson包工具类是Google开发的一个Java库,用于在Java对象和JSON数据之间进行映射。这个库使得在Java应用程序中处理JSON变得极其便捷,无论是在Android开发还是普通的Java项目中,Gson都是一个非常实用的工具。JSON...

    gson解析工具类封装

    本文将深入探讨如何封装一个Gson解析工具类,以优雅地处理JSON数据,尤其是避免在解析过程中遇到`String`为`null`时产生的错误。 首先,我们需要引入Gson库。如果你的项目是Maven项目,可以在pom.xml文件中添加以下...

    Gson工具类JsonUtils

    JsonUtils是一个基于Gson的工具类,它扩展了Gson的功能,提供了一种更便捷的方式来转换Java对象到JSON字符串,以及从JSON字符串反序列化回Java对象。这个工具类还支持泛型和任意类型的转换,极大地简化了开发过程。 ...

    gson解析工具类

    这个"**gson解析工具类**"很可能是为了简化Gson库的使用,提供了一些便利的方法来处理JSON序列化和反序列化操作。下面我们将深入探讨Gson库以及如何利用工具类进行有效操作。 ### Gson库介绍 Gson库的核心功能在于...

    Gson工具类 JsonUtil

    Google json工具类,将java对象装换为json,支持泛型和任意类型

    GSON工具测试类_java

    在Java开发中,Gson库是一个非常常用的工具,它由Google提供,用于在Java对象和JSON数据之间进行互相转换。Gson库的强大之处在于它的灵活性和便捷性,使得处理JSON格式的数据变得简单易行。本测试类将深入探讨如何...

    Gson工具类

    ### Gson工具类:实现JSON与Java对象的相互转换 Gson是Google提供的一个用于将Java对象转换为JSON字符串,以及将JSON字符串转换回Java对象的强大库。本文将深入解析Gson的基本用法,并通过示例代码来理解如何自定义...

    基于googleGson的Json工具类

    基于googleGson的Json工具类,支持List,Object与Json互转,简单易用,Java与Android通用

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

    总之,谷歌Gson 2.8.0版本是一个强大的JSON处理工具,不仅提供了基础的序列化和反序列化功能,还支持丰富的自定义选项和复杂的JSON结构处理。结合源码和文档,开发者可以更深入地理解和使用这一工具,提高开发效率和...

    Google gson jar包

    综上所述,Google Gson库是Java开发中处理JSON的强大工具,尤其适用于将JSON数据转换为复杂的Java数据结构,如List。通过引入gson.jar,开发者可以轻松地在项目中集成JSON解析和生成功能,提高代码的可读性和维护性...

    om.google.gson.Gson Gson maven依赖

    3. **类型适配器(Type Adapters)**:Gson允许自定义类型适配器来处理特定类型的序列化和反序列化逻辑,比如日期、自定义类等。 4. **字段忽略**:通过注解`@Expose`可以控制哪些字段被序列化或反序列化。 5. **...

    com.google.gson.Gson 2.8.1 2.8.2 jar包 gson

    总之,Google Gson是Java开发中不可或缺的数据序列化工具,其易用性、灵活性和广泛的功能使其成为处理JSON数据的标准选择。无论是简单的对象转换还是复杂的序列化需求,Gson都能够满足。而2.8.1和2.8.2版本的发布,...

    Google-gson-2.1

    总的来说,Google Gson是一个强大且易用的工具,对于任何需要处理JSON的Java或Android开发者来说都是不可或缺的。它简化了数据交换和存储过程,提供了丰富的选项来适应各种需求。"Google-gson-2.1"作为历史版本,...

    google Gson

    谷歌的Gson库是Java和Android开发者用于在JSON对象与Java对象之间进行转换的强大工具。它的全称是Google Gson,允许我们轻松地将Java对象序列化为JSON字符串,或者从JSON字符串反序列化为Java对象。这篇内容将深入...

    Google gson

    Gson还支持泛型处理,这意味着即使你的类使用了泛型,Gson也能正确地处理。此外,如果你的数据结构包含循环引用,Gson也提供了解决方案,通过设置`GsonBuilder`的`enableComplexMapKeySerialization`选项。 在实际...

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

    Google Gson库提供了一个强大的工具,使得Java对象与JSON字符串之间的转换变得简单易行。本文将详细介绍如何利用Google Gson库进行JSON字符串与对象之间的相互转换。 首先,我们需要了解Gson的核心概念。Gson库通过...

    GsonTools Gson工具类java

    GsonTools Gson工具类java Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

    google_gson_2.3.1

    谷歌的Gson库是Java开发者处理JSON数据的强大工具。标题中的"google_gson_2.3.1"指的是Google发布的Gson库的2.3.1版本,这是一个用于在Java对象和JSON数据之间进行互相转换的开源库。下面将详细阐述Gson库的功能、...

    Google发布的强大的gson包

    总结来说,Google的Gson 2.1是一个强大的工具,对于需要处理JSON数据的Java开发者来说,它是不可或缺的。无论是简单的数据转换,还是复杂的对象序列化,Gson都能提供简单而灵活的解决方案。如果你在Java项目中需要与...

    gson-2.8.0

    Gson支持多种Java类型,包括基本类型、集合、自定义类以及数组,甚至还能处理泛型和嵌套类。此外,它还提供了许多高级特性,如字段忽略、自定义序列化和反序列化策略、日期格式化等。 Gson库的使用非常直观。例如,...

Global site tag (gtag.js) - Google Analytics