Qt:QJson操作json文件(QJsonDocument、QJsonArray、QJsonObject)

2023-10-08 17:58

本文主要是介绍Qt:QJson操作json文件(QJsonDocument、QJsonArray、QJsonObject),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、使用QJsonObject:

[cpp]  view plain copy
print ?
  1. #include <QApplication>  
  2. #include <QDebug>  
  3. #include <QJsonObject>  
  4. #include <QJsonDocument>  
  5.   
  6. int main(int argc, char *argv[])  
  7. {  
  8.     QApplication a(argc, argv);  
  9.   
  10.     /*生成Json*/  
  11.     QJsonObject json;  
  12.     json.insert("name", QString("Qt"));  
  13.     json.insert("version", 5);  
  14.     json.insert("windows"true);  
  15.   
  16.     QJsonDocument document;  
  17.     document.setObject(json);  
  18.     QByteArray byte_array = document.toJson(QJsonDocument::Compact);  
  19.     QString json_str(byte_array);  
  20.     qDebug()<<"生成Json:"<<json_str;  
  21.   
  22.     /*解析Json*/  
  23.     QJsonParseError json_error;  
  24.     QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, &json_error);  
  25.     if(json_error.error == QJsonParseError::NoError)  
  26.     {  
  27.         if(parse_doucment.isObject())  //判断是否是对象  
  28.         {  
  29.             QJsonObject obj = parse_doucment.object();  
  30.             if(obj.contains("name"))  
  31.             {  
  32.                 QJsonValue name_value = obj.take("name");  
  33.                 if(name_value.isString())  
  34.                 {  
  35.                     QString name = name_value.toString();  
  36.   
  37.                     qDebug()<<"name "<<name;  
  38.                 }  
  39.             }  
  40.             if(obj.contains("version"))  
  41.             {  
  42.                 QJsonValue version_value = obj.take("version");  
  43.                 if(version_value.isDouble())  
  44.                 {  
  45.                     int version = version_value.toVariant().toInt();  
  46.   
  47.                     qDebug()<<"version "<<version;  
  48.                 }  
  49.             }  
  50.             if(obj.contains("windows"))  
  51.             {  
  52.                 QJsonValue version_value = obj.take("windows");  
  53.                 if(version_value.isBool())  
  54.                 {  
  55.                     bool flag = version_value.toBool();  
  56.                     qDebug()<<"windows "<<flag;  
  57.                 }  
  58.             }  
  59.         }  
  60.     }  
  61.   
  62.     return a.exec();  
  63. }  
运行的结果:


二、使用QJsonArray:

[cpp]  view plain copy
print ?
  1. #include <QApplication>  
  2. #include <QDebug>  
  3. #include <QJsonArray>  
  4. #include <QJsonValue>  
  5. #include <QJsonDocument>  
  6.   
  7. int main(int argc, char *argv[])  
  8. {  
  9.     QApplication a(argc, argv);  
  10.     /*生成Json*/  
  11.     QJsonArray json;  
  12.     json.insert(0, QString("Qt"));  
  13.     json.insert(1, QString("version"));  
  14.     json.insert(2, true);  
  15.   
  16.     QJsonDocument document;  
  17.     document.setArray(json);  
  18.     QByteArray byte_array = document.toJson(QJsonDocument::Compact);  
  19.     QString json_str(byte_array);  
  20.     qDebug()<<"生成Json:"<<json_str;  
  21.     /*解析Json*/  
  22.     QJsonParseError json_error;  
  23.     QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, &json_error);  
  24.     if (json_error.error == QJsonParseError::NoError)  
  25.     {  
  26.         if (parse_doucment.isArray())   //判断是否是数组  
  27.         {  
  28.             QJsonArray array = parse_doucment.array();  
  29.             int size = array.size();  
  30.             for (int i=0; i < size; i++)  
  31.             {  
  32.                 QJsonValue value = array.at(i);  
  33.                 if (value.isString())  
  34.                 {  
  35.                     QString name = value.toString();  
  36.   
  37.                     qDebug()<<"数组索引:"<<i<<", name:"<<name;  
  38.                 }  
  39.                 else if (value.isBool())  
  40.                 {  
  41.                     bool flag = value.toBool();  
  42.   
  43.                     qDebug()<<"数组索引:"<<i<<", flag:"<<flag;  
  44.                 }  
  45.             }  
  46.         }  
  47.     }  
  48.   
  49.     return a.exec();  
  50. }  

运行结果:

这篇关于Qt:QJson操作json文件(QJsonDocument、QJsonArray、QJsonObject)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/167023

相关文章

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

在C#中分离饼图的某个区域的操作指南

《在C#中分离饼图的某个区域的操作指南》在处理Excel饼图时,我们可能需要将饼图的各个部分分离出来,以使它们更加醒目,Spire.XLS提供了Series.DataFormat.Percent属性,... 目录引言如何设置饼图各分片之间分离宽度的代码示例:从整个饼图中分离单个分片的代码示例:引言在处理

Qt实现对Word网页的读取功能

《Qt实现对Word网页的读取功能》文章介绍了几种在Qt中实现Word文档(.docx/.doc)读写功能的方法,包括基于QAxObject的COM接口调用、DOCX模板替换及跨平台解决方案,重点讨论... 目录1. 核心实现方式2. 基于QAxObject的COM接口调用(Windows专用)2.1 环境

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE

使用Python在PDF中绘制多种图形的操作示例

《使用Python在PDF中绘制多种图形的操作示例》在进行PDF自动化处理时,人们往往首先想到的是文本生成、图片嵌入或表格绘制等常规需求,然而在许多实际业务场景中,能够在PDF中灵活绘制图形同样至关重... 目录1. 环境准备2. 创建 PDF 文档与页面3. 在 PDF 中绘制不同类型的图形python

Java 操作 MinIO详细步骤

《Java操作MinIO详细步骤》本文详细介绍了如何使用Java操作MinIO,涵盖了从环境准备、核心API详解到实战场景的全过程,文章从基础的桶和对象操作开始,到大文件分片上传、预签名URL生成... 目录Java 操作 MinIO 全指南:从 API 详解到实战场景引言:为什么选择 MinIO?一、环境