android 中Gson 的使用
2015-06-27 09:54
507 查看
目前的客户端大都有和服务端进行交互,而数据的格式基本就是json了,于是在Android开发中就经常用到json解析,方便的是Google已经为我们提供了一个很棒的json解析库–gson,那么今天就来总结分享下gson的各种用法。
gson的官方下载地址:google-gson
首先我们来看一个最简单的用法,假设json的数据格式是这样的:
那么我们只需要定义对应的一个类:
使用起来只需如下几行代码就行了:
这里是最简单的用法,created_at直接定义了String类型,如果你想要Date类型的也可以,就变成下面的例子:
有人说created_at不是java风格,java编程规范是驼峰结构,那么ok,Gson很人性化的也提供注解的方式,只需要把Foo对象改成这样就ok了:
然后用法不变,是不是很方便。
假设要返回如下数据:
那么对象的定义是这样的
假如返回的是json数组,如下:
这种解析有两种方法:
1、解析成数组
2、解析成List
上面基本就总结到开发中常用到的集中类型,用法很简单方便,主要需要json数据抽象成对应的数据模型就ok了。不过阿里也有一套自己的开源json解析库–FastJson,据说性能更佳,但是实际应用中感觉Gson的解析已经相当快了,而且更习惯用Google官方的东西,所以对FastJson没有怎么研究,以后有时间使用体验一下。
原文地址:http://stormzhang.com/android/2014/05/22/android-gson/
版权声明:本文为博主原创文章,未经博主允许不得转载。
gson的官方下载地址:google-gson
单个对象
首先我们来看一个最简单的用法,假设json的数据格式是这样的:{ "id": 100, "body": "It is my post", "number": 0.13, "created_at": "2014-05-22 19:12:38" }
那么我们只需要定义对应的一个类:
public class Foo { public int id; public String body; public float number; public String created_at; }
使用起来只需如下几行代码就行了:
public static final String JSON_DATA = "..."; Foo foo = new Gson().fromJson(JSON_DATA, Foo.class);
这里是最简单的用法,created_at直接定义了String类型,如果你想要Date类型的也可以,就变成下面的例子:
public class Foo { public int id; public String body; public float number; public Date created_at; } public static final String JSON_DATA = "..."; GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.setDateFormat("yyyy-MM-dd HH:mm:ss"); Gson gson = gsonBuilder.create(); Foo foo = gson.fromJson(JSON_DATA, Foo.class);
有人说created_at不是java风格,java编程规范是驼峰结构,那么ok,Gson很人性化的也提供注解的方式,只需要把Foo对象改成这样就ok了:
public class Foo { public int id; public String body; public float number; @SerializedName("created_at") public String createdAt; }
然后用法不变,是不是很方便。
对象的嵌套
假设要返回如下数据:{ "id": 100, "body": "It is my post", "number": 0.13, "created_at": "2014-05-22 19:12:38" "foo2": { "id": 200, "name": "haha" } }
那么对象的定义是这样的
public class Foo { public int id; public String body; public float number; public String created_at; public ChildFoo foo2; public class ChildFoo { public int id; public String name; } }
对象数组
假如返回的是json数组,如下:[{ "id": 100, "body": "It is my post1", "number": 0.13, "created_at": "2014-05-20 19:12:38" }, { "id": 101, "body": "It is my post2", "number": 0.14, "created_at": "2014-05-22 19:12:38" }]
这种解析有两种方法:
1、解析成数组
public static final String JSON_DATA = "..."; Foo[] foos = new Gson().fromJson(JSON_DATA, Foo[].class); // 这时候想转成List的话调用如下方法 // List<Foo> foosList = Arrays.asList(foos);
2、解析成List
public static final String JSON_DATA = "..."; Type listType = new TypeToken<ArrayList<Foo>>(){}.getType(); ArrayList<Foo> foos = new Gson().fromJson(JSON_DATA, listType);
总结
上面基本就总结到开发中常用到的集中类型,用法很简单方便,主要需要json数据抽象成对应的数据模型就ok了。不过阿里也有一套自己的开源json解析库–FastJson,据说性能更佳,但是实际应用中感觉Gson的解析已经相当快了,而且更习惯用Google官方的东西,所以对FastJson没有怎么研究,以后有时间使用体验一下。原文地址:http://stormzhang.com/android/2014/05/22/android-gson/
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- Android-那些年我们进过的坑-ByteBuffer导致的bug
- Android---60---Notification 通知栏的简单使用
- android在代码中四种设置控件(以及TextView的文字颜色)背景颜色的方法
- Android实现推送方式解决方案
- android Unable to execute dex问题的解决
- Android 打造史上最简单的侧滑菜单
- Android中ListView的几种常见的优化方法
- Android的EditText字数检测和限制
- Android中dp和px之间进行转换
- Android知识体系
- Android开发之多级下拉列表菜单实现(仿美团,淘宝等)
- android实现文本复制到剪切板功能(ClipboardManager)
- android异步任务图片下载(进度条提示进度)
- Android 中文API文档
- Android Clipboard(复制/剪贴板)
- Android访问图库并将所选图片转换为Drawable并设为背景
- Android Studio 1.0 使用问题
- android环境搭建
- 利用Android的消息机制实现线程同步
- Android 刷脸神器,颜值价更高