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

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

动手学深度学习【数据操作+数据预处理】

import osos.makedirs(os.path.join('.', 'data'), exist_ok=True)data_file = os.path.join('.', 'data', 'house_tiny.csv')with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n') # 列名f.write('NA

线程的四种操作

所属专栏:Java学习        1. 线程的开启 start和run的区别: run:描述了线程要执行的任务,也可以称为线程的入口 start:调用系统函数,真正的在系统内核中创建线程(创建PCB,加入到链表中),此处的start会根据不同的系统,分别调用不同的api,创建好之后的线程,再单独去执行run(所以说,start的本质是调用系统api,系统的api

Java IO 操作——个人理解

之前一直Java的IO操作一知半解。今天看到一个便文章觉得很有道理( 原文章),记录一下。 首先,理解Java的IO操作到底操作的什么内容,过程又是怎么样子。          数据来源的操作: 来源有文件,网络数据。使用File类和Sockets等。这里操作的是数据本身,1,0结构。    File file = new File("path");   字

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点: 鼠标左键双击,设定红色的起点。左键双击设定起点,用红色标记。 设定终点: 鼠标右键双击,设定蓝色的终点。右键双击设定终点,用蓝色标记。 设置障碍点: 鼠标左键或者右键按着不放,拖动可以设置黑色的障碍点。按住左键或右键并拖动,设置一系列黑色障碍点

MySQL——表操作

目录 一、创建表 二、查看表 2.1 查看表中某成员的数据 2.2 查看整个表中的表成员 2.3 查看创建表时的句柄 三、修改表 alter 3.1 重命名 rename 3.2 新增一列 add 3.3 更改列属性 modify 3.4 更改列名称 change 3.5 删除某列 上一篇博客介绍了库的操作,接下来来看一下表的相关操作。 一、创建表 create

使用Qt编程QtNetwork无法使用

使用 VS 构建 Qt 项目时 QtNetwork 无法使用的问题 - 摘叶飞镖 - 博客园 (cnblogs.com) 另外,强烈建议在使用QNetworkAccessManager之前看看这篇文章: Qt 之 QNetworkAccessManager踏坑记录-CSDN博客 C++ Qt开发:QNetworkAccessManager网络接口组件 阅读目录 1.1 通用API函数

php中json_decode()和json_encode()

1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 参数 json

封装MySQL操作时Where条件语句的组织

在对数据库进行封装的过程中,条件语句应该是相对难以处理的,毕竟条件语句太过于多样性。 条件语句大致分为以下几种: 1、单一条件,比如:where id = 1; 2、多个条件,相互间关系统一。比如:where id > 10 and age > 20 and score < 60; 3、多个条件,相互间关系不统一。比如:where (id > 10 OR age > 20) AND sco