IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Qt保存JSON类型的文件或者json二进制文件 -> 正文阅读

[大数据]Qt保存JSON类型的文件或者json二进制文件

1.读取JSON文件

首先将数据保存为JSON文件或者二进制文件需要QJsonObject 、QJsonDocument等,
QJsonParseError 用来查看错误信息。
以下代码实现了读取JSON文件,还是需要逐层解,通过迭代器遍历值。

QFile  loadFile(FilePath);
	if (!loadFile.exists()) //文件不存在
		QMessageBox::information(0, "information", 0);
	if (!loadFile.open(QIODevice::ReadOnly | QIODevice::Text))
		QMessageBox::information(0, "information", QString::fromLocal8Bit("加载文件失败"));
	QByteArray array = loadFile.readAll();
	loadFile.close();
	QJsonParseError jsonParseError;
	QJsonDocument jsonDocument(QJsonDocument::fromJson(array, &jsonParseError));
	if (QJsonParseError::NoError != jsonParseError.error)
	{
		qDebug() << QString("JsonParseError: %1").arg(jsonParseError.errorString());
		return;
	}
	QJsonObject rootObject = jsonDocument.object();
	QJsonObject::const_iterator itchild = rootObject.constBegin();
	QJsonObject::const_iterator endchild = rootObject.constEnd();

	while (itchild != endchild)
	{
		QJsonObject child = itchild.value().toObject();
		QJsonObject::const_iterator itchild1 = child.constBegin();
		QJsonObject::const_iterator endchild1 = child.constEnd();
		while (itchild1 != endchild1)
		{
			controlOne.insert(make_pair(Serial.toInt(), toolName))
		}
	}
	control.insert(QString::fromStdString(itchild.key().toStdString()), controlOne);

2.保存JSON文件

QFile file(str);
	if (!file.open(QIODevice::WriteOnly)) {
		qDebug() << "File open error";
	}
	else {
		qDebug() << "File open!";
	}
	QJsonObject jsonObject;   //主要是把数据全部放到jsonObject中
	QMap <QString, QToolBase*>::iterator iterator_2 = FlowTabMap.begin();
	
	while (iterator_2 != FlowTabMap.end()) {
	//放值过程不在写
	}
	QJsonDocument jsonDoc;
	jsonDoc.setObject(jsonObject);
	// 将json以文本形式写入文件并关闭文件。
	file.write(jsonDoc.toJson());
	file.close();
	exit(0);

注意保存文件的话目前官方推荐一共有两种一种是toJSON(本地文件可以看到详细的json),一种为二进制文件,需要保存为为Cbor格式。5.15版本以下提供了一种老式兼容的方法, FromBinaryData() 或 fromRawData(),toBinaryData() 或 toRawData()

在这里插入图片描述

加载时
QJsonDocument jsonDocument(QJsonDocument::fromJson(array, &jsonParseError));
QJsonDocument jsonDocument(QJsonDocument(QCborValue::fromCbor(array).toMap().toJsonObject()));   //二进制
jdoc2 = QJsonDocument::fromBinaryData(ba);    //静态函数需要这样调用
保存时
file.write(jsonDoc.toJson());
file.write(QCborValue::fromJsonValue(jsonObject).toCbor());

关于QCborValue这个类,根据官方解释为json的超集。
https://doc.qt.io/qt-5/qcborvalue.html

官方JSON保存例子的链接

https://doc.qt.io/qt-5/qtcore-serialization-savegame-example.html
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:21:59  更:2021-12-15 18:23:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:51:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码