JSON Bean 相互转换工具(效率是Gson的两倍以上)

本帖最后由 xuehuayous 于 2015-12-24 08:44 编辑

前几天想封装一个自定义控件,用到Json解析,以前都使用Gson来解析Json数据的,但是想到一个简单的自定义控件就没必要大材小用使用Gson解析了吧。就自己写了下,测试了下效率竟然是Gson的3倍左右!

使用方法
JSON createBean Example
  1. // 使用JSON 操作 工具由JSON字符串封生成实体类
  2. String beanStr = JsonTool.createBean(json, "TestBean");
复制代码

JSON to Bean Example
  1. // 使用JSON 操作 工具将JSON字符串封装到实体类
  2. JSON createBean Example
  3. // 使用JSON 操作 工具由JSON字符串封生成实体类
  4. String beanStr = JsonTool.createBean(json, "TestBean");
  5. [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字符串封装到实体类
  6. YourBean newsCenter = JsonTool.toBean(jsonStr, YourBean.class);
复制代码
Bean to JSON Example

  1. // 使用JSON 操作 工具将实体类封装到JSON字符串
  2. String toJson = JsonTool.toJson(yourBean);
复制代码


使用的时候有以下两点需要注意:
  • Bean对象以及Bean对象的内部类如果覆盖了默认的构造函数,需要提供无参的构造函数;
  • 如果字段类型为List集合且为自定义类类型,则必须为该类的内部类;

  1. public class Bean {
  2.         public int id;
  3.         public List<Inner1> data;
  4.         // Inner1 必须为 Bean的内部类
  5.         public class Inner1 {
  6.                 public int id;
  7.                 public String title;
  8.                 List<Inner2> items;
  9.                 
  10.                 // 因为覆盖了默认的无参构造函数,需要提供无参的构造函数
  11.                 public Inner1() {
  12.                         super();
  13.                 }
  14.                 public Inner1(int id, String title) {
  15.                         super();
  16.                         this.id = id;
  17.                         this.title = title;
  18.                 }
  19.                 // Inner2 必须为 Inner1的内部类
  20.                 public class Inner2 {
  21.                         public int id;
  22.                         public String title;
  23.                         List<Inner2> items;
  24.                 }
  25.         }
  26. }
复制代码

下载地址:
https://github.com/xuehuayous/Android-JSONTool.gitAndroid Studio引入:
  1. dependencies {
  2.     compile 'com.kevin:jsontool:1.0.0'
  3. }
复制代码




  post_newreply
分享到:   QQ好友和群QQ好友和群 腾讯微博腾讯微博 QQ空间QQ空间
收藏收藏8  评分评分 分享淘帖 好评好评 差评差评
 
点评回复

举报

  

签到天数: 72 天

连续签到: 1 天

[LV.6]常住居民II

8

主题

195

帖子

852

e币
推荐
  楼主| 发表于 2015-11-23 09:18:44 | 只看该作者
withyi 发表于 2015-11-22 10:25
大神还是不是很理解你说的这句话,能再举例说明一下吗??(新手)
  • Bean对象以及Bean对象的内部类如果覆 ...

在帖子末尾的实例中Inner1 为Bean的内部类,并且Inner1含有有参数的构造函数
<code>public Inner1(int id, String title)</code>
那么就需要提供无参书的构造函数
<code>public Inner1() {
}</code>
因为默认情况下每个类都含有一个无参的构造函数,但是如果你写了一个含参数的构造函数,会覆盖掉默认的无参数的构造函数,并且无参数的构造函数是封装的工具中初始化类实例对象所需要的,因此需要自己添加上。
谢谢你的支持。
 
 
点评回复 支持 反对

评分 举报

  

签到天数: 8 天

连续签到: 1 天

[LV.3]偶尔看看II

40

主题

484

帖子

59

e币
推荐
 发表于 2016-3-10 16:53:33 | 只看该作者
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快啊。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值