【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较 原创 精华

Hagon
发布于 2022-2-7 18:03
浏览
3收藏

春节不停更,此文正在参加「星光计划-春节更帖活动」
@TOC

大家好! 我是来自深圳技术大学FSR实验室的同学,标题FFH就是FSRlab For Harmony!并且我也正在参加OpenHarmony成长计划从论文到开源提交研究,以后我们也会陆续在这个社区记录学习心得和体会。

参考文献

Spatial Data Monitoring and Mobile Applications – Comparison of Methods
for Parsing JSON in Android Operating System

引言

​ 上一篇文章简单地讲了为什么XML会逐渐被JSON取代,接下来这篇文章,我们来看一下国外几种常见JSON解析器的比较,分别是GsonAndroidJsonJSON.simpleJSON.smartJackson .以下分析大部分来自上面的参考文献,该论文主要讨论在Android操作系统上不同解析器处理移动设备JSON格式的问题。

Gson

​ 第一种解析方法称为Gson,来自com.google.gson.stream.JsonReaderpackage,是由Google团队为Java开发的,

【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区

AndroidJson

​ 第二种方法称为AndroidJson,使用谷歌直接提供的解析库,是Android SDK的一部分。与其他方法不同,无需将其他库编译到最终应用程序中。然而缺点是在与服务器建立通信时,下载的数据位于InputStream类对象中,这一步需要将数据转换为字符串类对象。因此对于大数据量的解析,性能要求会很高。

【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区

JSON.simple

JSON.simple用的是JSON.simple库,是基于堆的方法解析数据的。

【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区

JSON.smart

JSON.smart从代码结构上看和JSON.simple很相似,不同的是,JSON.smart是以性能为驱动。

【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区

Jackson

Jackson用的是Jackson JSON Processor库

【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区

场景介绍

该场景在不同的安卓设备上分别对10, 50, 100, 200, 500, 1000 和 5000 量级的空间数据进行解析,以下图表的X轴数据量Y轴不同解析库消耗的时间. Graph1-3提供了在单个设备上解析所需的测量时间。所有值均以毫秒为单位提供。对每个设备进行十次适当的测量,然后从测量值中获得平均值。

【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区

【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区

【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区【FFH】OpenHarmony啃论文成长计划---几种常见的JSON解析器比较-鸿蒙开发者社区

结论

​ 在图表上测试的数据来看,很明显,对于大型数据解析,使用Jackson 是最有利的方法。但是这种方法不适用于小型数据的解析,小型的数据量选择Gson性能可能会更佳。

fastJson和Jackson

​ 这里我也想提一下国内阿里大神温少凭一己之力撑起的fastJson,这个库以“快”出名,在国内有人使用,但是在国外大部分项目依然选择Jackson,这又是为什么呢?

​ 因为只有fastJson一个人负责,而像Jackson这些库是由一个团队负责的,所以一个人的团队开发的库可以比一个团队开发的还有性能优势,可以想到是走了些捷径,这些捷径就是在fastJson中写死了一些代码,导致扩展性不高牺牲了java某些应该兼容的特性,以达到了所谓的,其代码质量相较国外的库是比较差的。

​ 所以fastJson之所以没在国际上流行起来,最主要的原因应该是开发者的思路全放到上去了,而偏离了标准及功能性,质量也不够好,有点“舍本逐末"的味道,并且没有英文文档,这样就更没法指望老外用了。

​ 而Jackson的拓展性很高。各种奇葩需求都能得到满足,开源代码质量也比较高,开源项目社区的运营也比较好。

参考文献

Spatial Data Monitoring and Mobile Applications – Comparison of Methods
for Parsing JSON in Android Operating System

https://www.zhihu.com/question/44199956

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
Spatial_Data_Monitoring_and_Mobile_Appli.pdf 1.8M 15次下载
已于2022-2-15 17:07:03修改
4
收藏 3
回复
举报
1条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

感谢讲解,新的知识增加了

回复
2022-2-8 10:08:15
回复
    相关推荐