什么是JSON
JSON(JavaScript Object Notation)是一个用于数据交换的文本格式,它源至于 JavaScript 语言,但它本身只是一种数据格式,可用于任何编程语言。现时具类似功能的格式有 XML等。
一个典型的JSON文本如下:
{
"title": "Design Patterns",
"subtitle": "Elements of Reusable Object-Oriented Software",
"author": [
"Erich Gamma",
"Richard Helm",
"Ralph Johnson",
"John Vlissides"
],
"year": 2009,
"weight": 1.8,
"hardcover": true,
"publisher": {
"Company": "Pearson Education",
"Country": "India"},
"website": null}
从上述可得,JSON 是一个树状结构,而 JSON 只包含 6 种数据类型:
null: 表示为 null
boolean: 表示为 true 或 false
number: 表示为数值类型,一般为浮点数
string: 表示为 “…”
array: 表示为 [ … ]
object: 表示为 { … }
我们需要实现一个简单的C语言版本的JSON库,可以粗略概括为下面几点:
我们要实现的 JSON 库,主要是完成 3 个需求:
把 JSON文本解析为一个树状数据结构(parse)。
提供接口访问该数据结构(access)。
把数据结构转换成 JSON文本(stringify)。
通俗的讲,就是在C语言环境下,给你一个json字符串,如何把它解析为一个(树状)结构体,并且提供对外的接口,比如说获取里面的某些值等,同时你也能够将这个数据结构转换为一个json文本。
一些和XML的比较
首先要说明的是,我自己并不是太了解XML,因此查阅了一些网上相关的资料,如果有理解错误请指出。
为什么要比较?
我想的是,XML和JSON现在都存在并且还在广泛使用,说明了这两中数据交换格式不可互相替代(至少现在是),同时写一个JSON库, 我想也必要简单了解一些XML。
我参考了这两篇博客JSON与XML的区别比较 和 Json和xml两者的区别
json与xml的区别:
(1).可读性方面:基本相同,xml的可读性比较好,更符合人阅读习惯
(2).可扩展性方面:都具有很好的扩展性
(3).编码难度方面:相对而言,json的编码比较容易
(4).解码难度:json的解码难度基本为零,xml需要考虑子节点和父节点
(5).数据体积方面:json相对于xml来讲,数据体积小,传递速度快一点
(6).数据交互方面:json与JavaScript的交互更加方面,更容易解析处理,更好的数据交互
(7).数据描述方面:xml对数据描述性比较快好
(8).传输速度方面:json的速度远远快于xml
其他
之前自己就想找个简单点的开源项目来写一写,最后看一看发现json相对来说比较容易一点,后来意外发现知乎上有个从零开始的 JSON 库教程,适合像我一样的普通大学生模仿学习,另外还有一点就是。。。CVTE实习生笔试题有一道关于JSON的题,但是我没写出来。。。综合以上种种,我打算自己写一个C语言JSON库。
由于知乎上有完整的教程,我只是会把我自己学习大牛的代码和感悟放在上面,希望能对有同等需求的人有帮助。