Java解析JSON格式數據二

使用GSON來解析JSON格式數據。

Gson是google公司提供解析JSON格式數據的工具類,使用其需要下載gson-2.1.jar

Gson提供了兩種功能:

1、  將對象或不同的數據內容裝換爲JSON格式數據

2、  將JSON格式的內容還原到相應的對象屬性或其他屬性。

使用的JSON字符串爲:

{
    "persons": [
        {
            "age": 23,
            "name": "張三",
            "sex": "男"
        },
        {
            "age": 24,
            "name": "李四",
            "sex": "男"
        },
        {
            "age": 25,
            "name": "王五",
            "sex": "男"
        }
    ]
}
使用GSON解析和生成JSON字符串代碼爲:

package com.xiaomage;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

/***
 * 使用Gson解析JSON字符串
 * 
 * @author xiaomage
 * 
 */
public class GsonTools {
	
	/***
	 * 將Bean對象裝換爲JSON字符串
	 * @param object 要裝換的對象
	 * @return JSON字符串
	 */
	public static String createGsonString(Object object) {
		Gson gson = new Gson();
		String gsonString = gson.toJson(object);
		return gsonString;
	}
	

	/****
	 * 將JSON字符串轉換成Bean
	 * 
	 * @param clazz
	 *            要轉換的Bean的class
	 * @param jsonString
	 *            JSON字符串
	 * @return 轉換後的Bean對象
	 */
	public static <T> T changeJson2Bean(Class<T> clazz, String jsonString) {
		// 創建Gson對象
		Gson gson = new Gson();
		T t = gson.fromJson(jsonString, clazz);
		return t;
	}

	/***
	 * 將JSON字符串轉換成Bean集合
	 * @param <T>
	 * 
	 * @param clazz
	 *            要轉換的Bean的class
	 * @param jsonString
	 *            JSON字符串
	 * @return 轉換後的Bean對象集合
	 */
	public static  <T> List<T> changeJson2List(Class<T> clazz, String jsonString) {
		List<T> list = new ArrayList<T>();
		try {
			Type listType=new TypeToken<ArrayList<T>>(){}.getType();//TypeToken內的泛型就是Json數據中的類型
			Gson gson = new Gson();
			list =  gson.fromJson(jsonString, listType);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}

	/***
	 * 將JSON字符串轉換成Map<String, T>集合
	 * 
	 * @param gsonString
	 *            JSON字符串
	 * @return
	 */
	public static <T> List<Map<String, T>> changeJson2ListMaps(String gsonString) {
		List<Map<String, T>> list = null;
		Gson gson = new Gson();
		list = gson.fromJson(gsonString, new TypeToken<List<Map<String, T>>>() {
		}.getType());
		return list;
	}

	/***
	 * 將JSON字符串轉換成Map<String, T>
	 * 
	 * @param gsonString
	 *            JSON字符串
	 * @return
	 */
	public static <T> Map<String, T> changeJson2Maps(String gsonString) {
		Map<String, T> map = null;
		Gson gson = new Gson();
		map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
		}.getType());
		return map;
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章