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

相关文章

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro