JSON数据格式

作者: NickYang 分类: 技术文章,程序开发 发布时间: 2013-02-24 20:17

看到boost::property_tree类库的时候,发现它可以解析XML、JSON、INI,INFO格式的文件,XML和INI已经使用过,并且用别的库读取过了,而JSON这个看着面熟的格式,完全没有用过,只是知道在web应用里经常用到。所以今天我们就来看看JSON到底是个什么东西,它的数据格式和用途。

1.什么是JSON

JSON是一种轻量级的数据交换格式,全称是:JavaScript Object Notation,它有完全独立的数据格式,所以它是独立于任何编程语言的,它不太易于阅读,但是易于机器解析和生成。

2.JSON数据格式

JSON有两种格式

  • 名称/值 成对的集合,类似于关联数组或者map结构。

    实例:

    这个结构显然没有name=eliteYang来的直接和明显,而且浪费了很多引号,但是如果多个结构就会体现出这种结构的优势了,例如:

    前面我说过,这种结构不太容易阅读,这里它明显看起来很纠结,所以有些人说这个容易阅读让我很费解,大概是写代码写多了,接近机器了吧。

  • 值的有序列表,大部分语言中,这种结构被称之为数组。

    实例:

3.JSON的用途

JSON主要用于数据传输和转化,常用在web服务中,例如本站用的多说评论插件,它就是使用JSON将评论数据同步到多说的服务器上的,同时,显示评论也是从多说的服务器上通过JSON请求过来的。JS非常容易操作JSON,因为JSON的数据格式是JS原生的数据格式。当然了,其他方面也可以使用,比如网络传输,将JSON转化成字符串,压缩加密后用于消息事件,或者存储数据库时,将一些数据整个存成JSON格式,然后做成一个字符串存入数据库,还有许多用途,这里就不一一介绍了。


PS:

JSON与XML格式的比较:

优点:JSON占用较少字符,主要用在JS上,对存储JS复合对象来说很方便

缺点:JSON不易于阅读,可扩展性不强,而XML天生就有很强的扩展性,并且完全符合人类的阅读习惯。

而从编写角度来说,都差不多,因为现在都有专门的工具来编写两种格式的文件,解码难度也是近似的,都需要知道节点名,然后读取出数据。

C++操作JSON文件主要使用的库有boost.property_tree和JSONcpp等类库。

C++操作XML文件主要使用的库有rapidxml、tinyxml、boost.property_tree等类库。

下两篇我们会分别用C++操作JSON文件,来演示和说明boost.property_tree和JSONcpp的用法。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

12条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注