博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解析Json更快的Gson的APT版本开源库
阅读量:6760 次
发布时间:2019-06-26

本文共 1664 字,大约阅读时间需要 5 分钟。

分享一个Gson的APT版本开源库给大家

这个库的使用方法和原生的Gson的使用方式基本一样,但是因为使用了APT(Annotation Processing Tool)而使解析效率得到了提高

使用方法:

1 导入库

这个库是开源的: 建议直接拷贝:gsonaptannotation和gsonaptcomplier两个module进入自己工程。

接着:
dependencies {

...

compile project(':gsonaptannotation')

apt project(':gsonaptcomplier')

}

2 添加@Jsonbean到自己希望解析的相关类上

@JsonBeanpublic class LittleBean {    String littleBeanName;    public String getLittleBeanName() {        return littleBeanName;    }    public void setLittleBeanName(String littleBeanName) {        this.littleBeanName = littleBeanName;    }    public LittleBean() {    }    public LittleBean(String littleBeanName) {        this.littleBeanName = littleBeanName;    }}

3 编译工程

编译后会生成GsonAPT类

4 使用GsonAPT代替new Gson()

TestBean testBean = new TestBean();String str = GsonAPT.toJson(testBean);testBean = GsonAPT.fromJson(str,TestBean.class);Map
map = new HashMap<>();map.put(9, new OtherBean(""));map.put(1, new OtherBean(null));String mapStr = GsonAPT.toJson(map);map = GsonAPT.fromJson(mapStr,new TypeToken
>() {}.getType());

引用测试结果

How fast

how much time to parse the small bean:

times Gson toJson GsonAPT toJson Gson fromJson GsonAPT fromJson
10 3 1 10 1
10000 738 363 883 756
100000 8361 4420 10616 9346

how much time to parse the big bean:

times Gson toJson GsonAPT toJson Gson fromJson GsonAPT fromJson
1 673 325 811 700
10 7748 3740 9506 8182
times Gson toJson Speed / GsonAPT toJson Speed
10000(small) 49%
100000(small) 52%
1(big) 48%
10(big) 48%
times Gson fromJson Speed / GsonAPT fromJson Speed
10000(small) 86%
100000(small) 88%
1(big) 86%
10(big) 86%

注意点

  1. @JsonBean的相关类的字段需要有get/set方法或者是 public或包访问的

  2. 和默认的Gson一样,不能解析非静态的内部类

转载地址:http://oqbeo.baihongyu.com/

你可能感兴趣的文章
程序员总结:帮助你早些明白一些道理
查看>>
DI是实现面向切面和面向抽象的前提
查看>>
ABAP中TAB分隔符的使用
查看>>
smartforms初始化
查看>>
iOS buttonWithType:101 苹果私有api
查看>>
条款10:令operator=返回一个reference to *this
查看>>
单例模式
查看>>
.NET实现多个不同有效时间Session方案思考
查看>>
移动端常见问题及解决方案
查看>>
Github 使用的Markdown语言
查看>>
UVA 247 - Calling Circles (Floyd)
查看>>
Exchange: How to get Mailbox size in Exchange Shell?
查看>>
SqlBulkCopy使用心得
查看>>
几点要求自己也可以借鉴
查看>>
Highcharts的一些属性
查看>>
Django 中间件
查看>>
学城项目知识点整理及源码
查看>>
sqlServer,oracle中case关键字的用法
查看>>
表驱动法之保险费率
查看>>
娇俏2011年春装
查看>>