c语言实现json接口,实现一个C语言版的JSON库(1)

这篇博客讲述了作者计划创建一个简单的C语言版本的JSON库,包括解析JSON文本为树状数据结构、提供访问接口及将数据结构转回JSON文本的功能。文中对比了JSON与XML的优缺点,指出JSON在编码、解码和数据交互方面的优势,并分享了学习与实现JSON库的动机和过程。
摘要由CSDN通过智能技术生成

什么是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库。

由于知乎上有完整的教程,我只是会把我自己学习大牛的代码和感悟放在上面,希望能对有同等需求的人有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值