Gson解析List的一点小问题
这阵子在使用gson解析时遇到了点小麻烦,因为一直用的fastjson,最近一个项目里使用的gson,需要解析list集合,查资料都是使用TypeToken解决,相对比较麻烦,下面为大伙推荐一种简便的方法。
<Object> Object com.google.gson.Gson.fromJson(String json, Class<Object> classOfT) throws JsonSyntaxException 可以方便地帮我们把Json字符串转换成对应类型的对象。这里提供一个简单的例子,帮助大家理解。
Json字符串
{response: "success", demoList: [{id: "1", name: "jack", age: "21"},{id: "2", name: "joke", age: "22"},{id: "3", name: "pink", age: "23"}]}
Demo.java
public class Demo { private String id; private String name; private int age; }
如果要解析出来Demo的List,我们该怎么做呢?一般朋友查到网上的资料都是使用TypeToken的方法。
T com.google.gson.Gson.fromJson(String json, Class<T> classOfT) throws JsonSyntaxException
这个方法用起稍微有那么一点复杂,不过对于这个例子还不是很复杂,既然还是复杂,那就不讨论它了,这不是这儿的重点。
重点说说后面的方法:Gson.fromJson(String json, Class<Object> classOfT),因为我们需要Demo的集合,所以就封装一个DemoList类,用这个类接收fromJson()返回的结果,如下:
DemoList.java
public class DemoList {
private List<Demo> demoList;
public List<Demo> getDemoList() {
return demoList;
}
public void setDemoList(List<Demo> demoList) {
this.demoList = demoList;
}
}
接下来,在解析时候就可以一行代码搞定整个Json的反序列化操作,这时候才真正看到了Gson的强大之处,但值得注意的就是DemoList中红色的成员变量,它的名字应该是和Json字符串中集合的键是对应的,我就是因为不知道这点让我饱经磨难。
DemoList demo = new Gson().fromJson(json,DemoList.class);
List<Demo> list = demo.getDemoList();
是不是相当简单,不用fastJson一样,一级一级剥开了再处理,还要处理异常,但是个人还是感觉fastJson比较容易理解些,反正各有长短吧,以上纯属个人见解,大家习惯用谁谁,只希望能帮到遇到和我一样情况的朋友们。
Gson解析List的一点小问题的更多相关文章
- Gson解析的小例子
最近解析些复杂的节点数据解析,用安卓自带的json解析比较麻烦所以只能用Gson解析,所以从网上下了点demo来看看 http://blog.csdn.net/tkwxty/article/detai ...
- Gson解析复杂的json数据
最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的json解析方法即JsonObject ...
- 使用Gson解析复杂的json数据
Gson解析复杂的json数据 最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的jso ...
- Android网络之数据解析----使用Google Gson解析Json数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 一起来开发Android的天气软件(四)——使用Gson解析数据
离上一篇文章过去才4.5天,我们赶紧趁热打铁继续完毕该系列的天气软件的开发. 承接上一章的内容使用Volley实现网络的通信.返回给我们的是这一串Json数据{"weatherinfo&qu ...
- 【Android进阶】Gson解析json字符串的简单应用
在客户端与服务器之间进行数据传输,一般采用两种数据格式,一种是xml,一种是json.这两种数据交换形式各有千秋,比如使用json数据格式,数据量会比较小,传输速度快,放便解析,而采用xml数据格式, ...
- 通过Gson解析Json数据
Json是一种数据格式,便于数据传输.存储.交换:Gson是一种组件库,可以把java对象数据转换成json数据格式. gson.jar的下载地址:http://search.maven.org/#s ...
- Android解析Json数据之Gson解析
Gson是谷歌官方提供的解析json数据的工具类.json数据的解析能够使用JSONObject和JSONArray配合使用解析数据,可是这样的原始的方法对于小数据的解析还是有作用的,可是陪到了复杂数 ...
- 【转】采用Gson解析含有多种JsonObject的复杂json
本文对应的项目是MultiTypeJsonParser ,项目地址 https://github.com/sososeen09/MultiTypeJsonParser 0 前奏 使用 Gson 去解析 ...
随机推荐
- Double 与 Float 的值的比較结果
首先看geeksforgeeks上的两个程序: 程序1: #include<stdio.h> int main() { float x = 0.1; if (x == 0.1) print ...
- bzoj3442: 学习小组(费用流好题)
3442: 学习小组 题目:传送门 题解: 超级好题啊大佬们的神题!建图肥肠灵性!感觉自己是星际玩家... 首先呢st直接向每个人连边,容量为min(k,喜欢的小组个数),费用为0 然后每个人再向ed ...
- Oracle 11g AWR生成报告
1.生成单实例 AWR 报告: @$ORACLE_HOME/rdbms/admin/awrrpt.sql 2.生成 Oracle RAC AWR 报告: @$ORACLE_HOME/rdbms/adm ...
- 实现一个类似360的button
通过改写一个buttonst类,实现360效果的button. 主要可以完成:frame,hover,face效果,并且支持menu,tooltips 1)派生新的类QButton.添加虚函数,设置自 ...
- BZOJ 3339 线段树
思路: 考虑离线处理 显然 l固定时 r越大 ans越大 那我们不妨按照l从小到大排序 l->l+1的时候 l到next[l]这段区间都跟a[l]取min就好了 搞颗线段树维护一下 //By S ...
- 洛谷P2939 [USACO09FEB]改造路Revamping Trails(最短路)
题目描述 Farmer John dutifully checks on the cows every day. He traverses some of the M (1 <= M <= ...
- hiho1469 - 简单dp
题目链接 题目大意: 从一个大正方形数组里面找一个小正方形,满足其中的每个位置上的数都恰好比他的左边的那个和上边的那个大1(如果左边或上边的那个不存在的话就无此要求). 比如 1 2 32 3 43 ...
- 模拟post提交
模拟post提交 function post(URL, PARAMS) { var temp = document.createElement("form"); temp.acti ...
- windows下命令行复制
在CMD命令提示符窗口中点击鼠标右键,选择“标记”选项,然后按住鼠标左键不动,拖动鼠标标记想要复制的内容.标记完成以后请按键盘上的“回车”键
- Python学习————集合的增删查
可变的数据类型,他里面的元素必须是不可变的数据类型.无序,内容不能重复.应用于去重 增加:set1.add('元素')--->将元素无序的插入集合set1中set1.update("元 ...