Qt+JSON简单例子

Qt+JSON简单例子

  • Qt+JSON
  • example2
  • 参考

Qt+JSON

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtDebug>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonDocument>
#include <QTextCodec>
#include <QFile>
#include <QTextStream>
#include "json.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);init();
}MainWindow::~MainWindow()
{delete ui;
}int MainWindow::init()
{int arr[] = { 1, 2, 3 };double darr[] = { 4.2, 5.2 };bool barr[] = { true, false, true, false };QString value = "str";QJsonObject obj;obj.insert("Name", "Apple");obj.insert("Color", "Red");obj.insert("Weight", 0.2);JSON* json = new JSON();json->writeJson("bool", true);json->writeJson("int", 1);json->writeJson("double", 2.4);// value must be QString, implicit conversion turns string literal into booljson->writeJson("string", value);json->writeJson("str2bool", "str");json->writeJson("bool array", barr, 4);json->writeJson("int array", arr, 3);json->writeJson("double array", darr, 2);json->writeJson("object", obj);qDebug() << json->getJson();QString Passwdfile("hello.json");json->saveJson(Passwdfile);QString json_data = json->toString();ui->textEdit->setText(json_data);//原文链接:https://blog.csdn.net/Cappuccino_jay/article/details/125619033return 0;
}

json.h

#ifndef JSON_H
#define JSON_H#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonParseError>class JSON {
public:JSON();QJsonObject getJson();QJsonObject loadJson(const QString& filepath);void writeJson(const QString key, bool value);void writeJson(const QString key, int value);void writeJson(const QString key, double value);void writeJson(const QString key, QString value);void writeJson(const QString key, bool* array, int length);void writeJson(const QString key, int* array, int length);void writeJson(const QString key, double* array, int length);void writeJson(const QString key, QJsonObject object);bool saveJson(const QString& filepath);QString toString();private:QJsonObject json;
};
#endif // JSON_H

json.cpp

#include <QDebug>
#include <QFile>
#include <QIODevice>#include "json.h"JSON::JSON()
{
}QJsonObject JSON::getJson()
{return json;
}QJsonObject JSON::loadJson(const QString& filepath)
{QFile loadFile(filepath);if (!loadFile.open(QIODevice::ReadOnly))qDebug() << "Unable to load JSON file";QByteArray allData = loadFile.readAll();loadFile.close();QJsonParseError json_error;QJsonDocument jsonDoc(QJsonDocument::fromJson(allData, &json_error));if (json_error.error != QJsonParseError::NoError)qDebug() << "JSON error!";QJsonObject rootObj = jsonDoc.object();return rootObj;
}// NOTE: implicit conversion turns string literal into bool
void JSON::writeJson(const QString key, bool value)
{json.insert(key, value);
}void JSON::writeJson(const QString key, int value)
{json.insert(key, value);
}void JSON::writeJson(const QString key, double value)
{json.insert(key, value);
}// value only support QString
void JSON::writeJson(const QString key, QString value)
{json.insert(key, QString(value));
}void JSON::writeJson(const QString key, bool* array, int length)
{QJsonArray arr;for (int i = 0; i < length; i++)arr.append(array[i]);json.insert(key, arr);
}void JSON::writeJson(const QString key, int* array, int length)
{QJsonArray arr;for (int i = 0; i < length; i++)arr.append(array[i]);json.insert(key, arr);
}void JSON::writeJson(const QString key, double* array, int length)
{QJsonArray arr;for (int i = 0; i < length; i++)arr.append(array[i]);json.insert(key, arr);
}void JSON::writeJson(const QString key, QJsonObject object)
{json.insert(key, object);
}bool JSON::saveJson(const QString& filepath)
{QJsonDocument document;document.setObject(json);QFile file(filepath);if (!file.open(QIODevice::WriteOnly | QIODevice::Text)){qDebug() << "Fail to save contents to JSON file";return false;}file.write(document.toJson());return true;
}QString JSON::toString()
{QJsonDocument document;document.setObject(json);QByteArray byteArray = document.toJson(QJsonDocument::Compact);QString str(byteArray);return str;
}

hello.json

{"bool": true,"bool array": [true,false,true,false],"double": 2.4,"double array": [4.2,5.2],"int": 1,"int array": [1,2,3],"object": {"Color": "Red","Name": "Apple","Weight": 0.2},"str2bool": true,"string": "str"
}

在这里插入图片描述

example2

json.h

#ifndef JSON_H
#define JSON_H#include <QString>
#include <QJsonDocument>
#include <QJsonParseError>
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonArray>
#include <QFile>
#include <QTextStream>
#include <QDebug>struct Today
{int ID;QString date;char name[32];
};class Json
{
public:Json();
public:int init();bool saveJson(const QString& filepath, QJsonObject &json);private://顺便给结构体给一个变量Today today;
};
#endif // JSON_H

json.cpp

#include "json.h"Json::Json()
{today.date = "20190911";today.ID = 001;int len = strlen("zhangsan");memcpy(today.name, "zhangsan", len);today.name[len] = '\0';
}int Json::init()
{QJsonObject json;//构建json对象jsonjson.insert("ID", today.ID);json.insert("date", today.date);json.insert("name", today.name);QJsonDocument document;document.setObject(json);QByteArray byte_array = document.toJson(QJsonDocument::Compact);QString json_str(byte_array);QString Passwdfile("hello3.json");saveJson(Passwdfile, json);//原文链接:https://blog.csdn.net/ljwoainia/article/details/100735303return 0;
}bool Json::saveJson(const QString& filepath, QJsonObject &json)
{QJsonDocument document;document.setObject(json);QFile file(filepath);if (!file.open(QIODevice::WriteOnly | QIODevice::Text)){qDebug() << "Fail to save contents to JSON file";return false;}file.write(document.toJson());file.close();qDebug() << "finish to save contents to JSON file" << endl;return true;
}
{"ID": 1,"date": "20190911","name": "zhangsan"
}

参考

  • Cappuccino-jay【QT】Qt使用QJson生成json文件并保存
  • 其实我也恋长安 QT5中如何将数据转换为JSON格式

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

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

相关文章

Linux C/C++ 实现网络流量分析(性能工具)

网络流量分析的原理基于对数据包的捕获、解析和统计分析&#xff0c;通过对网络流量的细致观察和分析&#xff0c;帮助管理员了解和优化网络的性能、提高网络安全性&#xff0c;并快速排查和解决网络故障和问题。 Linux中的网络流量常见类型 在Linux中&#xff0c;网络流量可以…

3.72 Command Buffer及URP概述

一、Command Buffer 1.概念 CommandBuffer携带一系列的渲染命令&#xff0c;依赖相机&#xff0c;用来拓展渲染管线的渲染效果。而且可以指定在相机渲染的某个点执行本身的拓展渲染。Command buffers也可以结合屏幕后期效果使用。 简单来说就是可以在渲染流程中插入一些自定…

R2R 的一些小tip

批次间控制器(Run-to-run Controller)&#xff0c;以应对高混合生产的挑战。将最优配方参数与各种工业特征相关联的模型是根据历史数据离线训练的。预测的最优配方参数在线用于调整工艺条件。 批次控制(R2R control)是一种先进的工艺控制技术&#xff0c;可在运行(如批次或晶圆…

招生报名缴费小程序开发笔记(上)

前期调研 1.数字化趋势&#xff1a; 随着社会的数字化转型&#xff0c;越来越多的教育机构倾向于采用数字工具来简化和优化他们的招生和报名过程。招生报名缴费小程序是应对这一趋势的一种解决方案&#xff0c;可以提供高效、方便、快速的在线招生渠道。2.用户需求&#xff1a…

进行商城的测试用例设计思路是什么?

进行商城的测试用例设计时&#xff0c;可以考虑以下思路&#xff1a; 1. 功能测试&#xff1a;测试商城的基本功能是否正常工作&#xff0c;包括用户注册、登录、浏览商品、搜索商品、添加商品到购物车、下单、支付等。 2. 数据验证测试&#xff1a;验证商城中的数据是否正确…

HarmonyOS 快速入门TypeScript

1.什么是TypeScript&#xff0c;它和JavaScript&#xff0c;ArkTs有什么区别 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript&#xff08;简称TS&#xff09;的基础上&#xff0c;匹配ArkUI框架&#xff0c;扩展了声明式UI、状态管理等相应的能力&#xff0c;让开发…

jenkins自动化操作步骤(gitblit)

1、登陆地址&#xff1a; http://xxxxxxxxx.org:xxxx/ admin/xxxx 2、创建任务 选择构建一个maven项目 3、配置 最多只保留一天一个任务 选择git仓库和账号密码 选择代码对应分支 build项&#xff1a; 1&#xff09;使用父项目的pom文件&#xff1a;k56-boot/pom.xml 2&…

《python语言程序设计》(2018版)第5章编程题 第41题第3次路过。总结一下。没有走完的路

这道题最大的需要就是能够进行两个数值的对比&#xff0c;同时还能让更多的数值依次进入到对比中。 这道题的解题版本 这个版本只是能统计出谁是最大数。但是无法统计最大数出现了多少次。 number "" count 0 data_number 0 while number ! 0:number eval(inpu…

Babylonjs学习笔记(五)——创建PBR材质

书接上回&#xff0c;这里讨论PBR材质&#xff01;&#xff01;&#xff01; // 创建天空盒/* */const createSkyBox (scene:Scene):void>{const envTex CubeTexture.CreateFromPrefilteredData(./env/environment.env,scene)scene.environmentTexture envTex;scene.cre…

基于元模型优化算法的主从博弈多虚拟电厂动态定价和能量管理MATLAB程序

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 参考文献&#xff1a; 基于元模型优化算法的主从博弈多虚拟电厂动态定价和能量管理_董雷 仿真平台&#xff1a; MATLABcplex 主要内容&#xff1a; 主要为多虚拟电厂/微网的优化调度策略&#xff0c;模型…

Stable Diffusion AI绘图

提示词&#xff1a; masterpiece, best quality, 1girl, (anime), (manga), (2D), half body, perfect eyes, both eyes are the same, Global illumination, soft light, dream light, digital painting, extremely detailed CGI anime, hd, 2k, 4k background 反向提示词&…

在Go项目中二次封装Kafka客户端功能

1.摘要 在上一章节中,我利用Docker快速搭建了一个Kafka服务,并测试成功Kafka生产者和消费者功能,本章内容尝试在Go项目中对Kafka服务进行封装调用, 实现从Kafka自动接收消息并消费。 在本文中使用了Kafka的一个高性能开源库Sarama, Sarama是一个遵循MIT许可协议的Apache Kafk…

Flask路由机制分析之二

一、前言 上篇 《Flask 路由机制分析之一》主要讲了Python函数的特性以及装饰器的基本概念&#xff0c;这节我们具体分析一下路由内部机制&#xff0c;Flask路由依赖于werkzegu的routing模块来实现。 二、werkzegu的routing模块介绍 Werkzegu库的routing模块主要功能在于URL…

PDF 文档处理:使用 Java 对比 PDF 找出内容差异

不论是在团队写作还是在个人工作中&#xff0c;PDF 文档往往会经过多次修订和更新。掌握 PDF 文档内容的变化对于管理文档有极大的帮助。通过对比 PDF 文档&#xff0c;用户可以快速找出文档增加、删除和修改的内容&#xff0c;更好地了解文档的演变过程&#xff0c;轻松地管理…

大数据Flink(一百零五):SQL性能调优

文章目录 SQL性能调优 一、 ​​​​​​​MiniBatch 聚合

企业如何安全跨国传输30T文件数据

对于一些对数据敏感性比较高的企业&#xff0c;如IT企业和国企等&#xff0c;跨国数据传输是当今企业面临的一个重要挑战&#xff0c;尤其是当数据量达到30T这样的规模时&#xff0c;如何保证数据的速度、安全和合规性&#xff0c;就成为了企业必须考虑的问题。本文将从以下几个…

计算机毕业设计选题推荐-周边美食推荐微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

大数据-Storm流式框架(八)---Storm案例

中国移动项目部署文档 一、项目架构 二、启动集群 1、启动Zookeeper集群 2、启动Hbase&#xff08;完全分布式需要先启动Hadoop集群&#xff09; 在conf/hbase-env.sh中设置JAVA_HOME 在conf/hbase-site.xml中&#xff0c;仅需要指定hbase和zookeeper写数据的本地路径。默…

2023 年值得关注的国外网络安全初创公司

网络安全初创公司试图解决的问题往往有点超前于主流。他们可以比大多数老牌公司更快地填补空白或新兴需求。初创公司通常可以更快地创新&#xff0c;因为它们不受安装基础的限制。 当然&#xff0c;缺点是初创公司往往缺乏资源和成熟度。公司致力于初创公司的产品或平台是有风…

Spring Web MVC入门

一&#xff1a;了解Spring Web MVC (1)关于Java开发 &#x1f31f;Java开发大多数场景是业务开发 比如说京东的业务就是电商卖货、今日头条的业务就推送新闻&#xff1b;快手的业务就是短视频推荐 (2)Spring Web MVC的简单理解 &#x1f497;Spring Web MVC&#xff1a;如何使…