全网最精细化全纵横对比JSON解析库Fastjson、Jackson及Gson。

什么是JSON

JSON作为目前web主流的数据交互格式,是一种轻量级的数据交互格式。尤其在ajax和rest技术的大行道当今,无疑是数据交互的首选,它易于人阅读和理解,可以在多种语言之间进行交换。同时也易于机器解析和生成。

为什么要用JSON

为什么要使用JSON,我觉得有必要先带大家了解一下XML(Extensible Markup Language 可扩展标记语言),因为JSON正在慢慢取代XML。1998年2月10日,W3C(World WideⅥiebConsortium,万维网联盟)公布XML 1.0标准,XML诞生了。XML使用一个简单而又灵活的标准格式,为基于Web的应用提供了一个描述数据和交换数据的有效手段。随着Ajax的流行,XML的弊端也就越来越多,大家都知道XML是基于DOM树实现的,而DOM树在各浏览器的表现是不一样的,所以使用XML跨浏览器使用的兼容性并不好,这就增加了大量的调式工作。解决这种兼容性问题的答案就是利用所有浏览器中的一种通用组件–java引擎,这样只需要创造一种java引擎能够识别的数据格式就可以了。至此JSON正式诞生。

json代码示例
{
    "person": {
        "name": "pig",
        "age": "18",
        "sex": "man",
        "hometown": {
            "province": "江西省",
            "city": "抚州市",
            "county": "崇仁县"
        }
    }
}

<?xml version="1.0" encoding="utf-8"?>
<person> 
  <name>pig</name>  
  <age>18</age>  
  <sex>man</sex>  
  <hometown> 
    <province>江西省</province>  
    <city>抚州市</city>  
    <county>崇仁县</county> 
  </hometown> 
</person>
比较XML与JSON的数据格式之后,JSON可阅读性、简易性更好而且相同数据负载JSON字符数更少!

JSON的解析库

解析库简介
Fastjson阿里巴巴的开源库,它可以解析json格式的字符串,支持Java Bean 序列化为JSON字符串,也可以从JSON字符串反序列化为Java Bean
JacksonJackson是美国FasterXML公司的一款适用于Java的数据处理工具,Spring框架默认使用Jackson进行JSON处理
GsonGson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

三款json解析器在github上的数据

image.png
image.png
image.png

可以看出fastjson是最受欢迎的,然后是gson,最后是jackson.

通过Benchmark性能测试工具,我们将Person对象转化成为json格式进行性能测试。

微信截图_20230515153138.png
性能测试结论是

  • 1000次json序列化 得分是Gson>Jackson>FastJson
  • 10000次json序列化 得分是Gson>Jackson>FastJson
  • 100000次json序列化 得分是FastJson>Jackson>Gson

在定制化方面,Jackson有灵活的API,代码质量上Fastjson之前存在字符串(128—255扩展ASCII码)就会直接异常和内存方面的问题,不过后面版本已经修复。回归本质json的本质并不是为了追求快,而是在与web有更好的简易使用,对于开发人员更好的理解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撸码仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值