Qt之JSON

简介: 简述JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于 JavaScript Programming Language、Standard ECMA-262 3rd Edition - December 1999 的一个子集。JSON 采用完全独立于语言的文本格式,但是也使用了类似于

简述

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于 JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999 的一个子集。JSON 采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的习惯(包括:C/C++、C#、Java、JavaScript、Perl、Python 等),这些特性使 JSON 成为理想的数据交换语言。

JSON 结构

JSON 基于两种结构:

  • “key/value 对”的集合
    不同的语言中,它被理解为对象(object)、纪录(record)、结构(struct)、字典(dictionary)、哈希表(hash table)、有键列表(keyed list)、或者关联数组 (associative array)。
{ "Name": "Qt", "Company": "Digia", "From": 1991 }
  • 值的有序列表
    在大部分语言中,它被理解为数组(array)。
"Colors": ["green", "blue", "yellow"]

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

JSON 形式

JSON 具有以下这些形式:

  • 对象(object)
    是一个无序的“key/value 对”集合。一个对象以“{”(左花括号)开始,“}”(右花括号)结束。每个 key 后跟一个“:”(冒号);“key/value 对”之间使用“,”(逗号)分隔。

    这里写图片描述

  • 数组(array)
    是值(value)的有序列表。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

    这里写图片描述

  • 值(value)
    可以是双引号括起来的字符串、数值、true、false、 null、对象或者数组。这些结构可以嵌套。

    这里写图片描述

  • 字符串(string)
    是由双引号包围的任意数量 Unicode 字符的集合,使用反斜线转义。一个字符即一个单独的字符串。

    字符串与 C 或者 Java 的字符串非常相似。

    这里写图片描述

  • 数值(number)

    也与 C 或者 Java 的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

    这里写图片描述

可以在 json.orgRFC-4627 中找到有关 JSON 数据格式的更多细节。

Qt 对 JSON 的支持

通过上述内容,我们对 JSON 有了详细的了解,在 Qt 使用过程中需要注意两点:

  • JSON 没有明确指定数字的有效范围,但 Qt 的支持仅限于 double 的有效范围和精度。
  • 对象(object)是“key/value 对”的集合,所有的 key 都是字符串,且不能重复 。

来看一个简单的 JSON 格式(包含:名称、公司、页面等):

{
    "Name": "Qt",
    "Company": "Digia",
    "From": 1991,
    "Page": {
        "Developers": "https://www.qt.io/developers/",
        "Download": "https://www.qt.io/download/",
        "Home": "https://www.qt.io/"
    },
    "Version": [
        4.8,
        5.2,
        5.7
    ]
}

上面示例,包含了一个拥有五个“key/value 对”的对象,values 中的两个(Company、Name)是字符串,一个(From)是数字,一个(Page)是对象,一个(Version)是数组。

一个有效的 JSON 文档要么是对象,要么是数组,所以 JSON 文档总由一对花括号({ … })或中括号([ … ])表示。

Qt 对 JSON 的支持包含这些类:

说明
QJsonArray 封装一个 JSON 数组
QJsonDocument 读和写 JSON 文档的方法
QJsonObject 封装 JSON 对象
QJsonObject::const_iterator QJsonObject::const_iterator 类为 QJsonObject 提供了一个 STL 风格的常量迭代器
QJsonObject::iterator QJsonObject::iterator 类为 QJsonObject 提供了一个 STL 风格的非常量迭代器
QJsonParseError 在 JSON 解析过程中用于报告错误
QJsonValue 封装 JSON 值

更多参考

目录
相关文章
|
2月前
|
JSON JavaScript 前端开发
Qt 5.14.2 深度解析:打造高效JSON处理利器
Qt 5.14.2 深度解析:打造高效JSON处理利器
|
4月前
|
JSON 数据格式
Qt Json 处理
Qt Json 处理
17 0
|
5月前
|
存储 JSON JavaScript
QT JSON数据格式讲解
QT JSON数据格式讲解
44 0
|
11月前
|
XML JSON 前端开发
Qt+QtWebApp开发笔记(五):http服务器html中使用json触发ajax与后台交互实现数据更新传递
前面完成了页面的跳转、登录,很多时候不刷新页面就想刷新局部数据,此时ajax就是此种技术,且是异步的。   本篇实现网页内部使用js调用ajax实现异步交互数据。   在js中使用 ajax是通过XMLHttpRequest来实现的。
|
JSON 数据格式 C++
C/C++ Qt 运用JSON解析库 [解析篇]
JSON是一种简单的轻量级数据交换格式,Qt库为JSON的相关操作提供了完整的类支持,使用JSON解析文件之前需要先通过`TextStream`流将文件读入到字符串变量内,然后再通过`QJsonDocument`等库对该JSON格式进行解析,以提取出我们所需字段。
377 0
|
存储 JSON JavaScript
C/C++ Qt 使用JSON解析库 [修改篇]
JSON是一种轻量级的数据交换格式,它是基于ECMAScript的一个子集,使用完全独立于编程语言的文本格式来存储和表示数据,简洁清晰的的层次结构使得JSON成为理想的数据交换语言,Qt库为JSON的相关操作提供了完整的类支持.
345 0
|
JSON 数据格式 Windows
Qt平台下使用QJson构建JSON字符串
Qt平台下使用QJson构建JSON字符串
369 0
Qt平台下使用QJson构建JSON字符串
|
JSON API C语言
Qt平台下使用QJson解析JSON字符串
Qt平台下使用QJson解析JSON字符串
282 0
Qt平台下使用QJson解析JSON字符串
|
存储 JSON JavaScript
json基础知识与Qt中的应用
json基础知识与Qt中的应用
165 0
json基础知识与Qt中的应用
|
JSON Java API
基于Qt的音乐播放器(三)通过酷狗音乐的api接口,返回json格式歌曲信息(播放地址,歌词,图片)
基于Qt的音乐播放器(三)通过酷狗音乐的api接口,返回json格式歌曲信息(播放地址,歌词,图片)
基于Qt的音乐播放器(三)通过酷狗音乐的api接口,返回json格式歌曲信息(播放地址,歌词,图片)