• 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. }
    复制代码




       
    分享到:  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快啊。
  • 相关阅读:
    MongoDB 安装记录
    Vue.JS 对比其他框架
    CSRF攻击原理以及防御
    浏览器何时发送一个Option请求
    Html5 Canvas核心技术(图形,动画,游戏开发)--基础知识
    CSSOM之getboundingclientrect和getclientrects
    CSSOM之getComputedStyle,currentStyle,getPropertyValue,getAttribute
    nodejs 访问mysql
    HTTP请求中的form data和request payload的区别
    html5 drap & drop
  • 原文地址:https://www.cnblogs.com/android-blogs/p/5340011.html
Copyright © 2020-2023  润新知