当前位置:   article > 正文

json数据过大转化为Java对象慢的问题_native 使用json转换比java效率快吗

native 使用json转换比java效率快吗

工作笔记——json数据过大转化为Java对象慢的问题

在对一个30mjson数据解析的过程中遇到的诸多问题与对应采用到的解决方法记录。最后的解决方案是更换解析JSON工具类以及提高工具类的版本,并且拆分数据最后从5-10秒优化到几十毫秒。

1.解决思路之更换解析json数据的工具类

目前主要有的的json工具类主要有阿里巴巴的FastJson、Google的Gson以及用来序列化和反序列化json的Java开源框架Jackson。对比以上三种常见的json处理工具类,各自特点也不同。

1.1 FastJson

FastJson是由阿里巴巴开发的不需要额外的Jar包,可以直接在JDK上运行,但是遇到一些引用数据类型的转换时比较容易出现错误,因此需要定制化的对部分引用类型比如LocalDate和LocalDateTime等等其他数据类型配合@JSONFormat等注解使用。

1.2 Gson

Gson是有Google的JSON工具类不需要额外的jar包,但是转换的时候需要创建好对象的类型才能将json字符串转换为对应的实体对象。Gson可以实现复杂的json到Bean以及Bean到json的转换

1.3 Jackson

Spring MVC的默认json解析器便是Jackson。Jackson 所依赖的jar包较少,简单易用。与其他Java的json的框架Gson等相比,Jackson解析大的json文件速度比较快,Jackson运行时占用内存比较低,性能比较好,Jackson有灵活的API,可以很容易进行扩展和定制。

遇到大数据量的json数据以及复杂的数据类型时,可以将三种解析json的工具类同时使用一下,多次测试,比较其中工具类解析json的速度来选择合适的JSON工具类使用。

注意:JSON工具类的版本不同,其底层实现逻辑不同,性能也会有很大的差异,用5M数据测试,FastJSON 1.0版本需要3到5秒,FastJSON 2.0仅仅需要几十毫秒。

2.解决思路之拆分数据

将json文件看成树形结构的话,找到最底层的多个分支,合理的人为设置主键id对应的数据节点关系,将其拆解为多张表对应的关系,节点上只留id的部分,在数据库中存储的过程中也可把一些简单的数组转化为json字符串存储以此来减小大数据json文件的转换时间,将解析数据的时间放到组装json的过程中。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/272897
推荐阅读
相关标签
  

闽ICP备14008679号