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靠谱