客户端

主流JSON库对比

所在版块: 后端技术 2019-07-30 17:07 [复制链接] 查看: 2819|回复: 0
前言
随着REST API的流行,json(JavaScript Object Notation)作为一种轻量级的数据交互格式,具备易于人阅读与编写同时易于机器生存与解析等特点,逐渐得到广泛的应用。与此同时,json库反序列化特性导致的远程代码执行漏洞层出不穷,破坏力十足且影响面广泛。本文将从Gson、Jackson和Fastjson这三个主流JSON库的性能、安全等方面进行对比分析,供大家参考、取舍。
JSON介绍
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等
主流JSON
目前主流JSON库包括以下三个:GSON、JACKSON、FASTJSON
GSON
Google公司发布的一个开源Java 库,主要用途为序列化Java对象为JSON字符串、反序列化JSON字符串成Java对象。Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化。同时每个方法都提供了重载方法
JACKSON
       Jackson是一款知名的JSON库,不仅支持流式处理json,还支持数据绑定,实现JSON字符串和Java对象的相互转换。Spring Boot默认自带jackson,也可以通过配置来修改。Jackson核心模块由三部分组成:
1.        jackson-core:核心包,提供基于流模式解析的相关API,包括JsonPaser和JsonGenerator。
2.        jackson-annotations:注解包,提供标准注解功能。
3.        jackson-databind:数据绑定包,实现了对象和JSON之间的转换,这个包依赖上面两个包
FASTJSON
       Fastjson是Alibaba开源的一款高性能JSON库。采用“假定有序快速匹配”的算法,号称Java语言中最快的JSON库。Fastjson接口简单易用,广泛应用在缓存序列化、协议交互、Web输出、Android客户端等场景。Fastjson提供两个主要接口toJsonString和parseObject来分别实现序列化和反序列化
性能分析
Fastjson官方性能对比:
当处理数据量较小时gson的性能优势明显,样本数较大值fastjson明显领先,Jackson性能与fastjson大体相当

建议:
综合分析,总结如下
        性能:处理数据较小时建议选用gson,数据量较大时:Jackson与fastjson性能相当,建议选择jackson
        安全性:gson风险最小,Jackson历史漏洞较多,但漏洞通报机制较好,其不存在全局的机制性问题,安全风险可控。Fastjson漏洞通报机制很差,且从架构上存在全局性机制问题,不建议使用。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码关注微信公众号

QQ|Archiver|手机版|小黑屋|mwt-design ( 沪ICP备12041170号-1

GMT+8, 2024-4-30 12:44 , Processed in 0.066129 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回列表