Qt框架之解析和构建Json格式数据-程序员不得不懂的一种数据格式。

json格式简介

    • 一、json格式简介
      • 1、概念
      • 2、json中的对象和数组
    • 二、Qt框架对json格式的主要支持类(以下说明根据官方文档翻译整理)
      • 1、QJsonDocument类
      • 2、QJsonObject类
      • 3、QJsonArray类
      • 4、QJsonValue类
    • 三、Json格式的构建与解析
      • 1、构建和解析的数据格式如下:
      • 2、构建与解析示例代码:
    • 四、推荐一个在线的json格式验证工具
      • 1、[json在线验证](https://www.json.cn/):https://www.json.cn/
      • 2、验证效果:

一、json格式简介

1、概念

JSON是一种轻量级的数据交换格式,采用key-value键值对的方式来存储数据,主要用于网络通讯传输、本地配置文件等,易于人阅读和编写。

2、json中的对象和数组

对象:采用大括号{},括起来,中间的以key-value的形式存储,形如{“name”:“ISmileLi”}。
数组:采用中括号[],括起来,中间的存储数据以逗号,分割开,形如[toby,ISmileLi]。

对象和数组之间可以相互嵌套使用。

二、Qt框架对json格式的主要支持类(以下说明根据官方文档翻译整理)

1、QJsonDocument类

QJsonDocument类提供了一种读写JSON文档的方法。
QJsonDocument是一个类,它包装一个完整的JSON文档,可以从UTF-8编码的基于文本的表示以及Qt自己的二进制格式读写该文档。
可以使用QJsonDocument::from JSON()将JSON文档,从基于文本的表示形式转换为QJsonDocument,使用toJson()将其转换回文本,解析器非常快速和高效,并将JSON转换为Qt使用的二进制表示。
可以使用isNull()查询解析文档的有效性!
可以使用isArray()和isObject()查询文档是否包含数组或对象。文档中包含的数组或对象可以使用array()或object()检索,然后读取或操作。
也可以使用fromBinaryData()或fromRawData()从存储的二进制表示创建文档。

2、QJsonObject类

QJsonObject类封装了一个JSON对象。
JSON对象是键-值对的列表,其中键是唯一的字符串,值由QJsonValue表示。
QJsonObject可以与QVariantMap进行转换。它提供了size、insert、remove等方法供使用并使用标准的C++迭代器模式迭代其内容。
QJsonObject是一个隐式共享的类,只要不修改它,它就与从中创建的文档共享数据。
可以通过QJsonDocument将对象转换为基于文本的JSON或者反向转换。

3、QJsonArray类

QJsonArray类封装了一个JSON数组。
JSON数组是一个值列表。可以通过从数组中插入和删除QJsonValue来操作列表。
QJsonArray可以与QVariantList进行转换。它提供了size、insert、remove等方法供使用,并使用标准的C++迭代器模式迭代其内容。
QJsonArray是一个隐式共享的类,只要不修改它,它就可以与QJsonDocument创建的文档共享数据。
可以通过QJsonDocument将数组转换为基于文本的JSON或者反向转换。

4、QJsonValue类

QJsonValue类用JSON封装一个值。
JSON是一种存储结构化数据的格式。它有6种基本数据类型:
布尔(Bool)、双精度(Double)、字符串(String)、数组(Array)、对象(Object)、空(Null)。
值可以表示上述任何数据类型。此外,QJsonValue还有一个特殊的标志来表示未定义的值,可以使用isUndefined()查询。
可以使用type()或访问器(如isBool()、isString()等)查询值的类型。同样,可以使用toBool()、toString()等将值转换为存储在其中的类型。
值在内部是严格类型化的,与QVariant相反,它不会尝试进行任何隐式类型转换。这意味着转换为不存储在值中的类型将返回默认的构造返回值

三、Json格式的构建与解析

1、构建和解析的数据格式如下:

{
   
    "ISmileLi": [{
   
        "info": {
   
            "id": "00000000",
            "sex": "就不告诉你",
            "age": "我还很年轻"
        },
        "location": {
   
            "city": "BeiJing",
            "country": "中国"
        },
        "profession": "programmer"
    }]
}

2、构建与解析示例代码:

#include 
#

你可能感兴趣的:(Qt,json,Qt解析和构建Json格式,QJsonDocument,QJsonObject,QJsonArray)