本帖最后由 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. hit-testing机制介绍

    1.简介 寻找处理触摸事件的view的过程为hit-testing,找到的能够处理触摸事件的view叫做hit-test view. 2.机制介绍 假设下图为我们的手机屏幕,当我们假设点击了view ...

  2. Python的数值和字符串

    Python数据类型 1.数值 --类型:  1/整型 2/长整型   3/浮点型 -- 0.0, 12.0, -18.8, 3e+7等 4/复数型 -- complex  In []: 0x34al ...

  3. Geoserver发布缓存切片(制定Gridsets)

    EPSG:4326 Level Pixel Size Scale Name Tiles   0 1: 2 x 1   1 1: 4 x 2   2 1: 8 x 4   3 1: 16 x 8   4 ...

  4. Mysql 数据库学习笔记05 触发器

    一.触发器 * 是由时间来出发某个操作,这些事件可以包括 insert.update.delete.等语句.当执行这些操作时,就会触发对应的操作. * 创建一个执行语句的触发器: create tri ...

  5. 三:基于Storm的实时处理大数据的平台架构设计

    一:元数据管理器==>元数据管理器是系统平台的“大脑”,在任务调度中有着重要的作用[1]什么是元数据?--->中介数据,用于描述数据属性的数据.--->具体类型:描述数据结构,数据的 ...

  6. poj 1742(好题,楼天城男人八题,混合背包)

    Coins Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 33269   Accepted: 11295 Descripti ...

  7. 【转载】WebService到底是什么?

    http://blog.csdn.net/wooshn/article/details/8069087/ 一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍 ...

  8. CSS Modules入门及React中实践(内附webpack4配置)

    本篇文章以整理为主,自己进行了部分修改,如有侵权,请告知 CSS Modules介绍 CSS Modules是什么东西呢?首先,让我们从官方文档入手:GitHub – css-modules/css- ...

  9. Java中多线程问题

    线程调度中的方法: sleep() 顾名思义线程休眠可传递连个参数-@毫秒 @纳秒 yield() 暂时挂起 这里的线程会释放资源,但是有一个坑是虽然是释放资源但是是公平竞争资源 如:a线程释放资源后 ...

  10. 动若脱兔:深入浅出angr--初步理解符号执行以及angr架构

    一:概论 angr作为符号执行的工具,集成了过去的许多分析方式,它不仅能进行动态符号执行,而且还能进行很多静态分析,他在分析二进制程序中能发挥很大的作用,下面为一些应用: 1:利用符号执行探究执行路径 ...