本帖最后由 xuehuayous 于 2015-12-24 08:44 编辑
前几天想封装一个自定义控件,用到Json解析,以前都使用Gson来解析Json数据的,但是想到一个简单的自定义控件就没必要大材小用使用Gson解析了吧。就自己写了下,测试了下效率竟然是Gson的3倍左右!
使用方法
JSON createBean Example
- // 使用JSON 操作 工具由JSON字符串封生成实体类
- String beanStr = JsonTool.createBean(json, "TestBean");
复制代码
JSON to Bean Example
- // 使用JSON 操作 工具将JSON字符串封装到实体类
- JSON createBean Example
- // 使用JSON 操作 工具由JSON字符串封生成实体类
- String beanStr = JsonTool.createBean(json, "TestBean");
- [align=left][font=Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif][color=#333333][b]JSON to Bean Example[/b][/color][/font][/align][code]// 使用JSON 操作 工具将JSON字符串封装到实体类
- YourBean newsCenter = JsonTool.toBean(jsonStr, YourBean.class);
复制代码
Bean to JSON Example
- // 使用JSON 操作 工具将实体类封装到JSON字符串
- String toJson = JsonTool.toJson(yourBean);
复制代码
使用的时候有以下两点需要注意:
- Bean对象以及Bean对象的内部类如果覆盖了默认的构造函数,需要提供无参的构造函数;
- 如果字段类型为List集合且为自定义类类型,则必须为该类的内部类;
- public class Bean {
- public int id;
- public List<Inner1> data;
- // Inner1 必须为 Bean的内部类
- public class Inner1 {
- public int id;
- public String title;
- List<Inner2> items;
-
- // 因为覆盖了默认的无参构造函数,需要提供无参的构造函数
- public Inner1() {
- super();
- }
- public Inner1(int id, String title) {
- super();
- this.id = id;
- this.title = title;
- }
- // Inner2 必须为 Inner1的内部类
- public class Inner2 {
- public int id;
- public String title;
- List<Inner2> items;
- }
- }
- }
复制代码
下载地址: https://github.com/xuehuayous/Android-JSONTool.gitAndroid Studio引入:
- dependencies {
- compile 'com.kevin:jsontool:1.0.0'
- }
复制代码
|
|
|
|
|
|
|
签到天数: 72 天
连续签到: 1 天
[LV.6]常住居民II
|
推荐
楼主| 发表于 2015-11-23 09:18:44 | 只看该作者
- Bean对象以及Bean对象的内部类如果覆 ...
在帖子末尾的实例中Inner1 为Bean的内部类,并且Inner1含有有参数的构造函数 <code>public Inner1(int id, String title)</code> 那么就需要提供无参书的构造函数 <code>public Inner1() { }</code> 因为默认情况下每个类都含有一个无参的构造函数,但是如果你写了一个含参数的构造函数,会覆盖掉默认的无参数的构造函数,并且无参数的构造函数是封装的工具中初始化类实例对象所需要的,因此需要自己添加上。 谢谢你的支持。 |
|
|
|
|
|
|
签到天数: 8 天
连续签到: 1 天
[LV.3]偶尔看看II
|
03-10 16:46:01.486 22196-22225/com.jxjson.com I/MainActivity: EOE.....5462 03-10 16:46:02.726 22196-22225/com.jxjson.com I/MainActivity: android.....1235 03-10 16:46:06.306 22196-22225/com.jxjson.com I/MainActivity: fastjson.....3577 03-10 16:46:07.296 22196-22225/com.jxjson.com I/MainActivity: json-smart.....993 03-10 16:46:09.786 22196-22225/com.jxjson.com I/MainActivity: gson.....2485
这是我刚才的是的,EOE那个打印的是从楼主给的地址下载的,测试了一下没有gson快啊。 |
|
失败是什么?没有什么,只是更走近成功一步;成功是什么?就是走过了所有通向失败的路,只剩下一条路,那就是成功的路。