您的位置:首页 > Web前端 > JavaScript

fastjson 嵌套对象,泛型的再次处理

2015-04-07 21:40 771 查看
由于google无法方便的进行list 泛型转换,采用fastjson就简单多了。

如:

String s = "[{\"id\":1,\"name\":\"李坤\"},{\"id\":2,\"name\":\"曹贵生\"},{\"id\":3,\"name\":\"柳波\"}]";
List<Student> personList = JSON.parseArray(s, Student.class);

一句搞定,超快捷有没有 :)

这是简单的list返回对象处理,如果返回是分页信息,包括主体信息:List对象,分页附属信息:总页数、当前页等,就需要再处理下:

//返回String结果,包括主体信息List(List可以是用户表、新闻等其他bean,这就是泛型的好处),以及分页附属信息

String s= "{\"currentPageCount\":12,\"last\":false,\"list\":[{\"birthday\":\"1981-2-1\",\"deptnames\":\"信息部\",\"email\":\"333@qq.com\",\"mobile\":\"18011111111\",\"names\":\"sam xie\",\"username\":\"admins\"},{\"$ref\":\"$.list[0]\"}],\"pageNumber\":2,\"pageSize\":12}"; //{\"$ref\":\"$.list[0]\"}指向list[0],重复,直接使用引用。
//下面直接两行就搞定分页对象、list对象
Page<User> page = FastJsonTools.getPage(s, User.class);
List<User> users = page.getList();

//关键来了,如何工具类取page
public class FastJsonTools {
public static <T> Page<T> getPage(String jsonString, Class<T> clz) {
try {
Page<T> page = JSON.parseObject(jsonString,
new TypeReference<Page<T>>() {
});
//泛型类型调用paseObject的时候,使用parseObject可以转换Class,
// 但是后边传TypeReference或者Type就解析不出泛型类型了,需要再转换一次
List<T> list = JSONArray.parseArray(page.getList().toString(), clz);
page.setList(list);
return page;
} catch (Exception e) {
// TODO: handle exception
}
return null;
}
}

//哦了,如有更好的方法,希望不吝赐教。

//另网络交互可以使用volley,比Asynctask简洁很多。推荐看下相声:满腹经纶 20分钟完整版,压力之余,轻松一下 :)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  fastjson 泛型