什么是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 |
Jackson | Jackson是美国FasterXML公司的一款适用于Java的数据处理工具,Spring框架默认使用Jackson进行JSON处理 |
Gson | Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。 |
三款json解析器在github上的数据
可以看出fastjson是最受欢迎的,然后是gson,最后是jackson.
通过Benchmark性能测试工具,我们将Person对象转化成为json格式进行性能测试。
性能测试结论是
- 1000次json序列化 得分是Gson>Jackson>FastJson
- 10000次json序列化 得分是Gson>Jackson>FastJson
- 100000次json序列化 得分是FastJson>Jackson>Gson
在定制化方面,Jackson有灵活的API,代码质量上Fastjson之前存在字符串(128—255扩展ASCII码)就会直接异常和内存方面的问题,不过后面版本已经修复。回归本质json的本质并不是为了追求快,而是在与web有更好的简易使用,对于开发人员更好的理解。