日期:2014-05-16  浏览次数:20416 次

【Android进阶】Gson解析json字符串的简单应用



在客户端与服务器之间进行数据传输,一般采用两种数据格式,一种是xml,一种是json。这两种数据交换形式各有千秋,比如使用json数据格式,数据量会比较小,传输速度快,放便解析,而采用xml数据格式,如果使用SAX解析方式,则可以一边加载一边解析,对于数据量比较大的应用,比较适合。今天主要整理一下使用Gson解析json格式字符串的简单使用。
首先,必须导入外部包



/**
 * 
 * @author ZhaoKaiQiang
 *
 * @time   2014年5月4日
 */
public class JSONParser {

	protected static Gson gson = new Gson();

	/**
	 * 任意对象转换为字符串
	 * 
	 * @param obj
	 *            任意对象,可以是任何实体类,Map<?,?>,List<?>接口的实现
	 * @return
	 */
	public static String toString(Object obj) {
		return gson.toJson(obj);
	}

	/**
	 * 标准JSON字符串反序列化为对象。
	 * 
	 * @param jsonString
	 *            json字符串
	 * @param type
	 *            类型反射(Class<?>)或反射令牌(TypeToken)
	 * @return
	 */
	public static Object toObject(String jsonString, Object type) {
		jsonString = jsonString.replace(" ", "");
		jsonString = jsonString.replace("﹠nbsp", "");
		jsonString = jsonString.replace("nbsp", "");
		jsonString = jsonString.replace("&", "");
		jsonString = jsonString.replace("&", "");
		jsonString = jsonString.replace("amp", "");

		if (type instanceof Class<?>) {
			try {
				return gson.fromJson(jsonString, (Class<?>) type);
			} catch (JsonSyntaxException e) {
				e.printStackTrace();
				return null;
			}
		} else if (type instanceof Type) {
			try {
				return gson.fromJson(jsonString, (Type) type);
			} catch (JsonSyntaxException e) {
				e.printStackTrace();
				return null;
			}
		} else {
			throw new RuntimeException("只能是Class<?>或者通过TypeToken获取的Type类型");
		}

	}
}