JSON数据格式
看到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数据格式的函数
- php执行数据库查询返回json格式数据
- 解析json格式数据
- SpringMVC(28):json数据的时间日期格式问题-解决与示例
- 从Web Service获取JSON格式数据
- json格式的数据导入到hive表中
- 【Java】SpringBoot 引入fastjson库进行json格式数据返回实例
- JS对象与JSON格式数据相互转换(转)
- 调用REST服务,处理JSON格式, XML格式, RSS/ATOM格式的数据(转)
- 【.net 深呼吸】聊聊WCF服务返回XML或JSON格式数据
- 在.NET使用JSON作为数据交换格式
- JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式 研究 (二)
- Json解析 开发实践 XML和JSON格式的数据
- json格式数据
- 初次使用json数据格式,发生的常识性错误。
- 利用Shell脚本将MySQL表中的数据转化为json格式
- 在IE中MVC控制器中返回JSON格式的数据时提示下载
- android 解析json数据格式
- JSON学习(案列):Android中解析JSON格式数据常见方法合集
- android用JSONObject和JSONArray解析json格式数据