http://blog.csdn.net/wanghao200906/article/details/41944761
解析 json一直用gson
突然出現了這個問題
類是這樣的 很簡單 但每個類都沒有關聯性
這樣寫代碼太垃圾了。。複用性在哪裏。。
所以打算用一個通用的方法 ,網上查 自己寫 出現啦這三種方法
public static <T> List<T> getList(String jsonString, Class<T> cls) {
List<T> list = new ArrayList<T>();
try {
Gson gson = new Gson();
if (jsonString != null && jsonString.length() > 0) {
list.add((T) gson.fromJson(jsonString,
new TypeToken<List<T>>() {
}.getType()));
}
} catch (Exception e) {
}
return list;
}
public static <T> T getPerson(String jsonString, Class<T> cls) {
T t = null;
try {
Gson gson = new Gson();
t = gson.fromJson(jsonString, cls);
} catch (Exception e) {
// TODO: handle exception
}
return t;
}
public static <T> List<T> getListType(Class<T> clazz, String json) {
Type type = new TypeToken<List<T>>() {
}.getType();
Gson gson = new Gson();
List<T> list = gson.fromJson(json, type);
return list;
}
主函數調用方法是這樣的
List<PlayItem> l = Gsons.getList(json, PlayItem.class);
System.out.println("l.getsize:" + l.size());
System.out.println("l.getname" + l.get(0).getChannelName());
可以確定json是完全沒問題的。。完全可用。
報錯如下
可見 是 得到了這個數組 但是 對應關係 有問題。。一直不知道怎麼解決 有大神看到 請幫我解決一下
下面是 fastjson解決了這個問題
http://download.csdn.net/detail/wanghao200906/8262245地址
只用這一句代碼就可以了
List<PlayItem> plist = JSON.parseArray(json, PlayItem.class);
當然了那個gson泛型解析的問題 依然沒有解決 希望有知道的告訴我
/**************************************華麗的分割線*********************************************************/
去年彩筆的我貌似年泛型都沒理解,哎。
現在gson搞定了。其實代碼很簡單。反正我不知道當初網上找了那麼多 都不成功 是爲什麼 反正 我這個方法是 分分鐘了。
package com.example.gson解析;
import com.google.gson.Gson;
public class GsonUtils {
public static<T> T jsonToBean(String jsonResult,Class<T> clz){
Gson gson = new Gson();
T t = gson.fromJson(jsonResult, clz);
return t;
}
}
時隔那麼久又用到了gson,但是 你大爺還是你大爺 ,我已經不是當年的我了
同時呢,又發現了 fastjson的 問題,就是當我解析的每個 item的名字如果首字母大寫 也會出現問題。 所以還是用gson靠譜