qt 开发笔记 json 自动转换实验

1.改用

读取json的配置文件能否想java和c#直接完成json字符串到对象的赋值呢,答案是不能?

能否用宏实现呢

比如:#define funMacro(json的键(变量名)) 变量名= jsonObject[#键].toInt();

这个看上去是个理想的选择,如果成功了,就能完成值和建的自动匹配了

但实际上失败了,因为宏的特点是变量可以变成字符串,而字符串的值却无法变成变量。

QString key = keys.at(i);
funMacro(a);

期待这个宏的结果是,如果变量和key的名称都是a

那么宏的结果是 key =  jsonObject["key "].toInt()

这显然不是我们想要的结果,可以直接用变量a

那么宏的结果是 a =  jsonObject["key "].toInt()

这结果对了,可是就无法实现自动的赋值了。

2.代码

2.1 main

 


#include "testmacro.h"int main(int argc, char *argv[])
{TestMacro tm;qDebug() << "Hello, World!";return 0;
}

2.2 testmacro.h

 

#ifndef TESTMACRO_H
#define TESTMACRO_Hclass TestMacro
{
public:TestMacro();
};#endif // TESTMACRO_H

2.3 testmacromod.h

#ifndef TESTMACROMOD_H
#define TESTMACROMOD_H#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>class TestMacroMod
{
public:TestMacroMod();int a;void setJson(QJsonObject jsonObject);
};#endif // TESTMACROMOD_H

 

2.4 testmacro.cpp

 

#include "testmacro.h"
#include "testmacromod.h"TestMacro::TestMacro() {TestMacroMod tm;QJsonObject obj;obj.insert("a",7);tm.setJson(obj);
}

2.5 testmacromod.cpp

 

#include "testmacromod.h"
#include <QDebug>
#define funMacro(ms) ms = jsonObject[#ms].toInt();TestMacroMod::TestMacroMod() {}void TestMacroMod::setJson(QJsonObject jsonObject){a = jsonObject["a"].toInt();QStringList keys = jsonObject.keys();for(int i=0; i<keys.size(); ++i){QString key = keys.at(i);funMacro(a);}qDebug() <<"a:"<< a;
}

3.运行结果

a: 7
Hello, World! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/35193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity中模拟抛物线(非Unity物理)

Unity中模拟抛物线非Unity物理 介绍剖析问题以及所需公式重力加速度公式&#xff1a;h 1/2*g*t*t(h 1/2 * g * t ^ 2)速度公式&#xff1a;Vt V初 a * t 主要代码总结 介绍 用Unity物理系统去做的抛物线想要控制速度或者想要细微的控制一些情况是非常困难的。所以想要脱离U…

国产CPU兆芯发展分析

国产信创CPU-兆芯CPU CPU&#xff1a;信创根基&#xff0c;国之重器 国产CPU已形成自主架构、x86、ARM三大阵营。自主架构以龙芯、申威的LoongArch、SW-64为代表&#xff1b;ARM阵营由鲲鹏、飞腾领军&#xff0c;依托ARM授权开发处理器&#xff1b;x86阵营则以海光、兆芯等品牌…

基于halcon的眼在手外(Eye-to-Hand)标定

前言 上个月写了一个《基于halcon的眼在手上&#xff08;Eye-in-Hand&#xff09;标定》的文章&#xff0c;通过官方的示例代码进行了简单的叙述&#xff0c;想学习的小伙伴可以点击链接进行学习。之前博主认为眼在手上&#xff08;Eye-in-Hand&#xff09;的案例更多&#xff…

leetcode209:长度最小的子数组

题目链接&#xff1a;209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int n nums.size();if(n 0) return 0;int end 0, start 0, sum 0, ans 0x3f3f3f3f;while…

C 语言高频面试题

常见的C语言初级面试题及详细解答 1. C语言的基本数据类型有哪些&#xff1f; 解答&#xff1a; C语言的基本数据类型包括整型&#xff08;int&#xff09;、字符型&#xff08;char&#xff09;、浮点型&#xff08;float&#xff09;、双精度浮点型&#xff08;double&…

OpenAI将终止对中国提供服务,国内模型接棒

说起来&#xff0c;OpenAI自始至终就没有对中国提供过服务&#xff0c;OpenAI官方支持的国家和地区&#xff1a;https://platform.openai.com/docs/supported-countries 列表里面没有“Chinese”的选项&#xff0c;那为什么又要明令禁止呢&#xff0c;国类IT高手们&#xff0…

批处理脚本的魔法:在Windows中嵌入脚本的艺术

&#x1f9d9;‍♂️ 批处理脚本的魔法&#xff1a;在Windows中嵌入脚本的艺术 &#x1f9d9;‍♀️ 批处理脚本&#xff08;Batch Script&#xff09;是Windows系统中的自动化脚本&#xff0c;用于执行一系列命令。在复杂的任务中&#xff0c;我们可能需要在一个批处理脚本中…

星河璀璨,uni-app 亮相华为 HDC2024 开发者大会

2024年6月21日-23日&#xff0c;第六届华为开发者大会(HDC.Together 2024)在东莞松山湖盛大举办&#xff0c;本次盛会重磅发布了万众关注的HarmonyOS NEXT。 作为鸿蒙生态的重要合作伙伴和深度参与者&#xff0c;DCloud CTO 崔红保受邀出席本次大会&#xff0c;并在鸿蒙生态伙…

day001 环境的配置与工具的安装

VMware的软件包&#xff1a;https://pan.xunlei.com/s/VNs1KShnlZalTSJtejXXzchlA1?pwdudy5# 其他的软件可以在电脑管家中下载&#xff0c;注意不要安装到c盘&#xff0c;否则影响开机速度。 虚拟机工具&#xff1a;VMware17.5.1 1&#xff0c; 2&#xff0c; 3&#xff0c…

欢乐钓鱼大师攻略:卡鱼骨、典藏鱼、藏宝图怎么钓?

《欢乐钓鱼大师》是一款以钓鱼为核心玩法的休闲模拟手游&#xff0c;通过逼真的画面和丰富的钓鱼体验吸引了大量玩家。本文将为你详细介绍这款游戏的亮点、常见问题以及一些实用的游戏技巧&#xff0c;帮助你在《欢乐钓鱼大师》中获得更愉快的游戏体验。 辅助工具 1. 辅助工具…

内网安全【5】隧道搭建

1.内网穿透工具 Ngrok Frp Spp Nps EW(停更) 一共是这五个 优点&#xff1a;穿透加密数据&#xff0c;中间平台&#xff0c;防追踪&#xff0c;解决网络问题 Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器 https://github.com/esrrhs/spp https://github.com/fatedie…

计算机网络之数据通信原理(中)

上节内容传送口&#xff1a;数据通信原理基础 1.数据传输方式 1.1并行传输 并行传输: 字符编码的各个比特同时传输 特点&#xff1a; 一个比特时间内可传输一个字符&#xff0c;传输速度快&#xff0c;每个比特传输要求一个单独的信道支持&#xff0c;通信成本高&#xf…

Redis数据类型详解:内存中的数据结构艺术

Redis是一个高性能的键值存储数据库&#xff0c;以其出色的读写速度和丰富的数据结构支持而广受欢迎。在Redis中&#xff0c;数据以键值对的形式存储&#xff0c;其中键是唯一的&#xff0c;而值则可以是多种数据类型。本文将详细探讨Redis支持的数据类型&#xff0c;以及每种数…

GPU算力租用平台推荐

推荐以下几家GPU算力租用平台&#xff1a; 1. AWS (Amazon Web Services) EC2 - AWS提供多种GPU实例&#xff0c;适合不同的计算需求&#xff0c;如机器学习、深度学习和图形渲染等。 - 优点&#xff1a;全球覆盖面广&#xff0c;稳定性高&#xff0c;服务支持全面。 …

探索网络爬虫技术:原理、实践与挑战

一、引言 在数字化时代&#xff0c;信息如同潮水般汹涌而来。过去&#xff0c;我们可能依赖书籍、报纸或电视来获取信息&#xff0c;但这些渠道的信息量有限&#xff0c;而且筛选过的信息未必能满足我们的需求。如今&#xff0c;互联网为我们提供了海量的信息&#xff0c;但同…

【Sklearn驯化-聚类指标】搞懂机器学习中聚类算法评估指标,轮廓系数、戴维森堡丁指数

【Sklearn驯化-聚类指标】搞懂机器学习中聚类算法评估指标&#xff0c;轮廓系数、戴维森堡丁指数 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#…

快来看,错过了今天就要设置为vip文章了---云原生重塑架构:AutoMQ 基于云构建十倍降本的 Kafka

Apache Kafka在数据流处理系统中的核心地位 Apache Kafka已成为大数据和流计算领域的行业事实标准&#xff0c;其重要性在数据流处理系统中不言而喻。随着数字化转型的加速&#xff0c;越来越多的企业选择基于Kafka来构建其在线业务消息传递系统&#xff0c;使其成为数字化转型…

一文梳理有效提升RAG效果的方法

来源&#xff1a;一文梳理有效提升RAG效果的方法 在大模型实际落地的时候&#xff0c;存在一些问题&#xff0c;主要集中在以下方面&#xff1a; 缺少垂直领域知识&#xff1a;虽然大模型压缩了大量的人类知识&#xff0c;但在垂直场景上明显存在短板&#xff0c;需要专业化的…

安全管理:守护数据库的堡垒(九)

引言 在前几章中&#xff0c;我们探讨了SQL基础、索引、事务处理、存储过程与函数以及视图等数据库核心技术&#xff0c;构建了坚实的数据库设计和管理基础。本章作为基础篇的最后一章&#xff0c;我们将聚焦于数据库安全管理&#xff0c;这是保障数据安全、合规性和隐私的关键…

如何通过小猪APP分发轻松实现应用内测分发

搞应用开发的朋友们&#xff0c;都知道内测分发这个环节有多重要。没有内测&#xff0c;一款应用基本上是不可能上线的。毕竟&#xff0c;谁也不想自己的产品在上线的那一刻就被用户吐槽得体无完肤。内测分发的好坏&#xff0c;直接影响到应用的质量和用户的第一印象。如何才能…