【Qt】Qt中JSON简介

00. 目录

01. JSON简介

1.1 JSON概述
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于JavaScript(Standard ECMA-262 3rd Edition – December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,使用了类C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。

JSON使用JavaScript语法来描述数据对象,但是JSON仍然独立于语言和平台。JSON解析器和JSON库支持许多不同的编程语言。

1.2 JSON语法

JSON语法是JavaScript对象表示法语法的子集,语法规则如下:

  • 数据在名称/值对中

  • 数据由逗号分隔

  • 花括号保存对象

  • 方括号保存数组

1.3 JSON键值对

JSON 数据的书写格式是:名称/值对。

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值

"firstName" : "John"

1.4 JSON值类型

  • 数字(整数或浮点数)

  • 字符串(在双引号中)

  • 逻辑值(true或false)

  • 数组(在方括号中)

  • 对象(在花括号中)

  • null

1.5 JSON对象

JSON对象在花括号中书写:

对象可以包含多个名称/值对:

{ "firstName":"Jin" , "lastName":"Deng" }

1.6 JSON数组

JSON数组在方括号中书写:

数组可包含多个对象:

{
    "people":[

        {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},

        {"firstName":"Jason","lastName":"Hunter","email":"bbbb"},

        {"firstName":"Elliotte","lastName":"Harold","email":"cccc"}

    ]
}

02. JSON Support in Qt

2.1 Qt中JSON概述

Qt提供了处理JSON数据的支持。JSON是一种编码来自Javascript的对象数据的格式,但现在已广泛用作Internet上的数据交换格式。

Qt中的JSON支持提供了易于使用的C ++ API来解析,修改和保存JSON数据。它还支持以二进制格式保存此数据,该格式可以直接“ mmap”访问并且访问速度非常快。

有关JSON数据格式的更多详细信息,可以在json.orgRFC-4627中找到

2.2 Qt中JSON类型

JSON是一种存储结构化数据的格式。它具有6种基本数据类型:

  • bool
  • double
  • string
  • array
  • object
  • null

值可以具有上述任何类型。布尔值由JSON中的true或false字符串表示。JSON并未明确指定数字的有效范围,但是Qt中的支持仅限于有效范围和双精度。字符串可以是任何有效的unicode字符串。数组是值的列表,而对象是键/值对的集合。对象中的所有键都是字符串,并且对象不能包含任何重复的键。

JSON的文本表示形式将数组括在方括号([…])中,将对象括在大括号({…})中。数组和对象中的条目以逗号分隔。对象中键和值之间的分隔符是冒号(:)。

简单的JSON例子如下:

  {
      "FirstName": "John",
      "LastName": "Doe",
      "Age": 43,
      "Address": {
          "Street": "Downing Street 10",
          "City": "London",
          "Country": "Great Britain"
      },
      "Phone numbers": [
          "+44 1234567",
          "+44 2345678"
      ]
  }

上面的示例由一个具有5个键/值对的对象组成。其中两个值是字符串,一个是数字,一个是另一个对象,最后一个是数组。

有效的JSON文档是数组或对象,因此文档始终以方括号大括号开头。

03. JSON类

QT4中使用第三方库QJson解析JSON文件。

QT5新增加了处理JSON的类,类均以QJson开头,包含在QtCore模块中。

QT5新增加如下七个相关类:

在这里插入图片描述

类名 描述
QJsonDocument 读写 JSON 文档
QJsonObject 封装 JSON 对象
QJsonObject::iterator 用于遍历QJsonObject的STL风格的非const遍历器
QJsonParseError 报告 JSON 处理过程中出现的错误
QJsonValue 封装 JSON 值
QJsonArray 封装 JSON 数组

04. 附录

4.1 JSON官方网站:http://json.org/

4.2 JsonCpp源码下载:https://github.com/open-source-parsers/jsoncpp

© 版权声明
THE END
喜欢就支持一下吧
点赞648 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容