QMap与Json相互转换

article/2025/10/23 20:04:07

在Qt中可以用QJsonDocument、QJsonParseError、QJsonObject、QJsonArray、QJsonValue等类来解析json数据,但这种解析有时比较麻烦,代码量也比较多,其实也可以用QMap来解析Json数据,并且QMap和Json可以 相互转换,下面来看具体的实例:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();void initConnect();public slots:void slotQMapToJson();void slotJsonToQMap();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMap>
#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);initConnect();
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::initConnect()
{//connect(ui->pushButton_QMapToJson, SIGNAL(clicked()), this, SLOT(slotQMapToJson()));connect(ui->pushButton_QMapToJson, &QPushButton::clicked,this, &MainWindow::slotQMapToJson);connect(ui->pushButton_JsonToQMap, &QPushButton::clicked,this, &MainWindow::slotJsonToQMap);
}void MainWindow::slotQMapToJson()
{QMap<QString, QVariant> mapData = QMap<QString, QVariant>();mapData.insert("id", "3000101");mapData.insert("number", "15289705326");mapData.insert("name", "Job Bresh");QJsonDocument doc = QJsonDocument::fromVariant(QVariant(mapData));QByteArray jba = doc.toJson();QString jsonString = QString(jba);qDebug() << "QMap<QString, QVariant> to json: \n" << jsonString;QByteArray njba = jsonString.toUtf8();QJsonObject nobj = QJsonObject(QJsonDocument::fromJson(njba).object());//字符串转换后的对象qDebug() << "string conversion of object: \n"<< nobj.take("id").toString() << endl<< nobj.take("number").toString() << endl<< nobj.take("name").toString() << endl;
}void MainWindow::slotJsonToQMap()
{//构建JSON对象QJsonObject json;json.insert("id", "3000102");json.insert("number", "15789705324");json.insert("name", "Job Victor");//构建JSON文档QJsonDocument document;document.setObject(json);QByteArray byteArray = document.toJson(QJsonDocument::Compact);QString strJson(byteArray);qDebug() << strJson;//Json转QMapQVariantMap map = json.toVariantMap();int numMap = map.size();//取值qDebug() << "numMap===========" << numMap;qDebug() << "map[\"id\"]===========" << map["id"];qDebug() << "map[\"id\"].toString()===========" << map["id"].toString();//qDebug() << "map.take(\"number\")===========" << map.take("number").toString();qDebug() << "map.value(\"name\")===========" << map.value("name").toString();QMap<QString, QVariant>::const_iterator iter = map.constBegin();while(iter != map.constEnd()){qDebug() << "key:" << iter.key() << "  value:" << iter.value();++iter;}
}
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

运行结果:

 


http://chatgpt.dhexx.cn/article/n2ahnBbk.shtml

相关文章

QMap 和 QHash容器

QMap类、 QHash类 QMap与QHash差别&#xff1a; ①QHash比QMap查找速度更快。 ②QHash以任意顺序存储&#xff0c;QMap以Key顺序存储数据。 ③QHash的Key必须提供operator()及一个全局的qHash(Key)函数&#xff0c;而QMap的Key必须提供operator<()函数。 存储一键多值数据时…

关于QMap的几点总结思考

关于QMap的几点总结思考 题记&#xff1a; 前段时间集中精力写了数据的分拣算法&#xff0c;用到了容器QMap和QMultiMap。回头再来回去该算法的时候&#xff0c;又觉得当时好像不是自己写的一样&#xff0c;于是有必要将QMap类来总结一下。 首先来了解下C中STL中的map&#x…

Qt容器:QMap

一、描述 QMap<Key, T> 是 Qt 的通用容器类之一。 它存储&#xff08;键&#xff0c;值&#xff09;对并提供按键快速查找。 二、成员函数 1、QMap::const_iterator constFind(const Key &key) 返回一个 const 迭代器&#xff0c;该迭代器指向map中具有 key 键的项…

java swing 实现简单计算器

gitee仓库地址&#xff1a;Calculator: 简单计算器 (gitee.com)https://gitee.com/misaka10000/calculator 常量定义&#xff1a; package com.wuzihao.calculator;import java.awt.*;public class Constant {public static final String NAME "简单计算器";publi…

C++实现“简单计算器”

最近在看九度上面的题目&#xff0c;其中一道题本以为比较简单&#xff0c;但花了不少时间&#xff0c;题目如下&#xff1a; 题目1019&#xff1a;简单计算器 我的思路是先读入一个字符串&#xff0c;再将字符串里面的数字和运算符号分别提取出来&#xff0c;最后根据运算的…

C++ 简单计算器

C实现简单的计算器 实现一个简单的计算器&#xff0c;可以实现对数字的加减乘除运算并输出显示结果。 完整代码 #include <iostream> using namespace std;int main() {char op;float num1, num2;cout << "输入运算符&#xff1a;、-、*、/ : ";cin &…

简单的计算器

实例说明 从键盘上输入数据并进行加、减、乘、除四则运算&#xff08;以“a运算符b” 的形式输入〕&#xff0c;判断输入的数据是否可以进行计算&#xff0c;若能计算&#xff0c;则输出计算结果。 实现代码 实现结果

C语言实现简单计算器

C语言实现简单计算器 一、背景二、代码1、数据结构2、弟弟行为的编程三、基本逻辑中缀转后缀&#xff08;1&#xff09;为什么要转&#xff08;2&#xff09;怎么转&#xff08;3&#xff09;注意事项 四、演示图片 一、背景 自己希望通过这个处女帖&#xff0c;来互相学习、经…

PHP实现简单计算器

目录 一、题目&#xff1a; 二、基本界面设计代码&#xff1a; 三、分析&#xff1a; 四、实现编程三个步骤 五、完整实现代码 一、题目&#xff1a; 题目描述&#xff1a;下列列表框中有、-、*、/四种运算符&#xff0c;选择不同的运算符进行&#xff0c;单击计算按钮进行不…

Linux:简单计算器

四则运算 vim一下1. 思路2. 代码分析及展示3. 运行结果 vim一下 用vi编写一个简单的四则运算程序&#xff0c;可以接受键盘输入的两个数和一个运算符号&#xff0c;并在控制台输出结果。 1. 思路 从键盘输入变量的值&#xff0c;获取这个值调用加减乘除这些函数&#xff0c;…

HTML实现简单计算器

简单计算器 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>简易计算器</title><style type"text/css">*{margin: auto;padding: 0px;text-align: center;font-family: "微软雅黑";}.con…

C语言实现简单计算器程序

简单计算器程序 编写一个简单计算器程序&#xff0c;输入格式为&#xff1a;data1 op data2。其中data1和data2是参加运算的两个数&#xff0c;op为运算符&#xff0c;它的取值只能是、-、*、/。。要求必须使用switch-case语句实现。 输出结果精确到小数点后2位&#xff1a;如…

AndroidStudio案例——简单计算器

效果展示 实验内容及步骤 设计一款带有可视化界面的简单计算器&#xff0c;供用户输入数据并查看结果。用户通过点击相应按钮&#xff08;加减乘除运算符、等号、数字&#xff09;输入正确的表达式&#xff0c;计算器进行相应的加减乘除运算&#xff0c;且可以进行小数和整数的…

Android简单计算器

文章目录 一、案列一、步骤1、activity_main.xml2、colors.xml3、strings.xml4、图片 一、案列 实现简易计算器 一、步骤 线性布局实现计算器&#xff0c;一个线性垂直布局里嵌套多个线性水平布局&#xff0c;插入文本框&#xff0c;编辑框&#xff0c;按钮多个控件&#x…

19:简单计算器

原题链接 总时间限制: 1000ms 内存限制: 65536kB 描述 一个最简单的计算器&#xff0c;支持, -, *, / 四种运算。仅需考虑输入输出为整数的情况&#xff0c;数据和运算结果不会超过int表示的范围。 输入 输入只有一行&#xff0c;共有三个参数&#xff0c;其中第1、2个参数…

python制作简单计算器

​ 做一个计算器&#xff0c;这是我们想要的效果。 1、准备工作 导入time、tqdm、math库 from tqdm import* from time import* from math import*2、开始 添加一个重复循环并添加变量s while True:#清屏print(\033c)while True:#如果用法输入的是str类型将打印输入错误&…

JavaScript实现简单计算器

一、两个输入框输入数值计算 步骤 1、编写html代码&#xff0c;实现计算器页面视图效果 2、编写js&#xff0c;实现点击输入数字和符号输出结果 1、编写html 1.1定义两个输入框和一个隐藏框。 1.2定义加减乘除四个按钮&#xff0c;并在里面设置一个单击事件onclick&#…

Java编写简单计算器

本文用Java的swing来实现一个简单计算器&#xff0c;主要内容为图形用户界面GUI的实现以及运算表达式核心算法的设计编写。 程序运行环境为Windows10 &#xff0c;编译环境为IntelliJ IDEA Community Edition 2022.2.3 一、具体功能&#xff1a; 1、&#xff1a;输入&#x…

项目一:简单计算器的实现

项目概述 1.1项目目标和主要内容 学习图形界 面的设计&#xff0c;利用 MFC 应用程序&#xff08;Java swing 或 QT 框架&#xff0c;或 C#&#xff09;创建基于对话框的应用程序&#xff0c;添加按钮、编辑框等控件&#xff1b; 能通过设计的按钮控件输入并实现简单算术运算&a…

【C语言】实现简易计算器

目录 1.实现逻辑 2.运行过程 3.优化前代码分析 主函数 计算函数 4.优化后代码分析 主函数 计算方法函数 输入操作数的函数 5.完整代码展示 1.实现逻辑 实现一个简易的计算器&#xff0c;可以计算两个整数的加减乘除 2.运行过程 3.优化前代码分析 主函数 int main()…