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

410 阅读3分钟

什么是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>
比较XMLJSON的数据格式之后,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有更好的简易使用,对于开发人员更好的理解。