简介

  • 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处理库:

  1. RapidJSON: RapidJSON是一个高性能的JSON解析和生成库,提供了灵活的API和丰富的功能。它具有快速的解析速度和低内存占用,并支持DOM和SAX风格的API。

  2. jsoncpp: jsoncpp是一个简单易用的C++ JSON库,提供了方便的API用于解析和生成JSON数据。它支持将JSON数据与C++对象进行相互转换,并提供了灵活的配置选项。

  3. nlohmann/json: nlohmann/json是一个现代化的C++ JSON库,具有简单易用的API和高性能。它支持以类似于JavaScript的方式访问和操作JSON数据,并提供了方便的函数和操作符用于序列化和反序列化。

这些库都是开源库,可以从它们的官方网站或代码托管平台获取源代码和使用文档。你可以选择适合你项目需求和编程风格的库来处理JSON数据。