本帖最后由 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. public Inner1() {
  11. super();
  12. }
  13. public Inner1(int id, String title) {
  14. super();
  15. this.id = id;
  16. this.title = title;
  17. }
  18. // Inner2 必须为 Inner1的内部类
  19. public class Inner2 {
  20. public int id;
  21. public String title;
  22. List<Inner2> items;
  23. }
  24. }
  25. }

复制代码

下载地址:
https://github.com/xuehuayous/Android-JSONTool.gitAndroid Studio引入:

  1. dependencies {
  2. compile 'com.kevin:jsontool:1.0.0'
  3. }

复制代码

    post_newreply
分享到:  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快啊。

JSON Bean 相互转换工具(效率是Gson的两倍以上)的更多相关文章

  1. JSON对象与XML相互转换工具类

    依赖jar <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId ...

  2. Springboot中使用Xstream进行XML与Bean 相互转换

    在现今的项目开发中,虽然数据的传输大部分都是用json格式来进行传输,但是xml毕竟也会有一些老的项目在进行使用,正常的老式方法是通过获取节点来进行一系列操作,个人感觉太过于复杂.繁琐.推荐一套简单的 ...

  3. 5分钟白嫖我常用的免费效率软件/工具!效率300% up!

    Mac 免费效率软件/工具推荐 1. uTools(Windows/Mac) 还在为了翻译 English 而专门下载一个翻译软件吗? 还在为了格式某个 json 文本.时间戳转换而打开网址百度地址吗 ...

  4. Json:Java对象和Json文本转换工具类

    Json 是一个用于 Java 对象 和 Json 文本 相互转换的工具类. 安装 下载源码 git clone https://github.com/njdi/durian.git 编译源码 cd ...

  5. Web 开发人员必备的随机 JSON 数据生成工具

    在 Web 开发中,经常会需要一些测试数据来测试接口或者功能时候正确.JSON Generator 就是这样一款生成随机 JSON 数据的在线工具,Web 开发人员必备,记得收藏和分享啊. 您可能感兴 ...

  6. [性能] Bean拷贝工具类性能比较

    Bean拷贝工具类性能比较 引言 几年前做过一个项目,接入新的api接口.为了和api实现解耦,决定将api返回的实体类在本地也建一个.这样做有两个好处 可以在api变更字段的时候保持应用稳定性 可以 ...

  7. 使用jackson对Java对象与JSON字符串相互转换的一些总结

    本文为菠萝大象原创,如要转载请注明出处.http://www.blogjava.net/bolo 代码无真相,为了最简单的说明,我直接上代码. public class User { private  ...

  8. 简单的map转换成Bean的工具

    简单的map转换成Bean的工具 package com.sd.microMsg.util; import java.lang.reflect.Field; import java.lang.refl ...

  9. 为什么使用 Containjs 模块化管理工具效率高?

    为什么使用 Containjs 模块化管理工具效率高? 要说明这个首先得说明一下,Containjs 的模块加载原理. 第一步,首先使用异步加载(ajax)在 js 目录下的 app.js 入口模块( ...

随机推荐

  1. Visual Studio 附加到进程调试

    Visual Studio 果然是强大的,今天第一次使用附加到进程调试的功能!但是,在使用的时候发现进不了断点... 解决方案: 1.发布的时候选择Debug,而不是Release: 2.右键项目-& ...

  2. 使用while循环遍历文件

    /* 使用while循环遍历文件*/ [root@localhost test1]# vim 17.py //add #!/usr/bin/python ll = open('/tmp/1.txt') ...

  3. 在 Visual Studio 中使用正则表达式

    Visual Studio 使用 .NET framework 正则表达式查找和替换文本. 在 Visual Studio 2010 和早期版本中,Visual Studio 在“查找和替换”窗口中使 ...

  4. 堆--LogN的数据结构

    我们这里的堆是指用来表示元素集合的一种数据结构 一个二叉树是一个堆是由堆的两个性质决定的(以小根堆为例) 1:任何节点的值都小于或等于其子节点的值 2:该二叉树最多在两层上具有叶节点,其中最底层的叶节 ...

  5. MapReduce程序的几种提交运行模式

    本地模型运行 1/在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行      ----输入输出数据可以放在本地路径下(c:/wc/ ...

  6. shell读取nginx配置文件中nginx的端口

    #!/bin/shport=`nl /usr/local/openresty/nginx/conf/nginx.conf | sed -n '/listen/p' | awk 'NR==1{print ...

  7. 主机批量扫描工具fping,hping安装及使用

    https://blog.csdn.net/weixin_39762926/article/details/79476196?utm_source=blogxgwz0 https://blog.csd ...

  8. [loj#2566][BZOJ5333] [Sdoi2018]荣誉称号 树形dp

    #2566. 「SDOI2018」荣誉称号   休闲游戏玩家小 Q 不仅在算法竞赛方面取得了优异的成绩,还在一款收集钻石的游戏中排名很高. 这款游戏一共有 n 种不同类别的钻石,编号依次为 1 到 n ...

  9. C#获取网页信息核心方法(入门一)

    目录:信息采集入门系列目录 下面记录的是我自己整理的C#请求页面核心类,主要有如下几个方法 1.HttpWebRequest Get请求获得页面html 2.HttpWebRequest Post请求 ...

  10. [Bootstrap]modal弹出框

    写在前面 在实际开发中,为了友好,更需要一种美观的弹出框,js原生的alert,很难满足需求.这里推荐一个bootstrap的弹出框. 一个例子 先看效果吧 代码: <!DOCTYPE html ...