什么是 JSON
实现一个 C 语言版的 JSON 库(1)。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 库。
由于知乎上有完整的教程,我只是会把我自己学习大牛的代码和感悟放在上面,希望能对有同等需求的人有帮助。
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: http://www.92to.com/bangong/2017/03-27/19535484.html