最新消息:

JSON数据格式

技术文章 NickYang 14574浏览 12评论

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

1.什么是JSON

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

2.JSON数据格式

JSON有两种格式

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

    实例:

    {"name": "eliteYang"}

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

    {"name": "eliteYang", "name": "AAA", "name"="BBB"}

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

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

    实例:

    {"address":[
        {"name":"eliteYang", "email":"elite_yang@163.com"},
        {"name":"AAA", "email":"aaa@163.com"},
        {"name":"BBB", "email":"bbb@163.com"}
    ]}
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的用法。

转载请注明:C++爱好者博客 » JSON数据格式

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (12)

  1. json,xml在web中经常用到,特别是做ajax请求中~
    红色石头6年前 (2013-03-04)回复
  2. 好像 听老师讲过一点
    爱软6年前 (2013-02-28)回复
    • 那你们的教育不错嘛,我上学的时候都没听过。
      eliteYang6年前 (2013-03-01)回复
  3. 这个实在是太专业了
    藏章博客6年前 (2013-02-28)回复
  4. C++爱好者 = = 这个东西有什么可以爱好的 我没感觉到
    梦月酱6年前 (2013-02-27)回复
    • 只是一个名字而已,为了配合域名,不知道你是做什么的,个人有个人的工作方向,如果你靠这个吃饭,不爱也得爱啊
      eliteYang6年前 (2013-02-27)回复
    • 俺还是.NET爱好者呢。哈哈
      优弧6年前 (2013-02-28)回复