简介
- JSON,指的是JavaScript对象表示法(JavaScript Object Notation)
- JSON是轻量级的文本数据交换格式
- JSON独立于语言,JSON使用Javascript语法来描述数据对象,但是JSON仍然独立于语言和平台。JSON解析器和JSON库支持许多种不同的编程语言。目前非常多的动态编程语言都支持JSON
- JSON具有自我描述性,更容易理解
与XML相同之处
- JSON和XML都用于接收Web服务端的数据
- JSON是纯文本
- JSON具有自我描述性(人类可读)
- JSON具有层级结构(值中存在值)
- JSON可通过JavaScript进行解析
- JSON数据可使用AJAX进行传输
JSON语法规则
JSON语法是JavaScript对象表示语法的子集
数据在名称/值对中
数据由逗号
,
分隔使用斜杠
\
来转义字符大括号
{}
保存对象中括号
[]
保存数组,数组可以包含多个对象JSON的两种结构
- 对象:大括号
{}
保存的对象是一个无序的名称/值对集合。一个对象以左括号{
开始,右括号}
结束。每个键后跟一个冒号:
,名称/值对使用逗号,
分隔。 - 数组:中括号
[]
保存的数组是值(value)的有序集合。一个数组以左中括号[
开始,右中括号]
结束,值之间使用逗号,
分隔。值(value)可以是双引号括起来的字符串,数值,true, false, null, 对象或者数组,它们是可以嵌套的
- 对象:大括号
JSON名称/值对
- JSON数据的书写格式是:
key:value
- 名称/值对包括字段名称(在双引号中),后面写一个冒号,然后值:
"name":"abc"
,等价于JavaScript语句:name = "abc"
C++处理JSON的开源库
在C++中,有多个流行的库可以用于处理JSON数据。以下是一些常用的C++ JSON处理库:
RapidJSON: RapidJSON是一个高性能的JSON解析和生成库,提供了灵活的API和丰富的功能。它具有快速的解析速度和低内存占用,并支持DOM和SAX风格的API。
jsoncpp: jsoncpp是一个简单易用的C++ JSON库,提供了方便的API用于解析和生成JSON数据。它支持将JSON数据与C++对象进行相互转换,并提供了灵活的配置选项。
nlohmann/json: nlohmann/json是一个现代化的C++ JSON库,具有简单易用的API和高性能。它支持以类似于JavaScript的方式访问和操作JSON数据,并提供了方便的函数和操作符用于序列化和反序列化。
这些库都是开源库,可以从它们的官方网站或代码托管平台获取源代码和使用文档。你可以选择适合你项目需求和编程风格的库来处理JSON数据。