使用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;
}
}