qt中JSON文件读写操作
·
参考博客:https://blog.csdn.net/xzh_blue/article/details/51723635
1、新建一个qt的工程,然后放上三个按钮,点击按钮就是直接执行写入函数的操作
2、qt中使用JSON,使用的头文件为:
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonValue>
#include <QJsonParseError>
3、在3个槽函数中的代码如下:
void MainWindow::on_pushButton_clicked()
{
//写入键值对的值
QJsonObject json;//将键值对应的写入进去
json.insert("name", QString("Qt"));//插入对应的键值对的值
json.insert("version", 5);
json.insert("windows", true);
QJsonDocument document;
document.setObject(json);
QByteArray byte_array = document.toJson(QJsonDocument::Compact);//定义一个QJsonDocument的紧凑的输出,使用QJsonDocument::Compact方式写出
QString json_str(byte_array);//将值转换为QString的格式
//qDebug()<<"json_str"<<json_str;
//读取json中键值对的值
QJsonParseError json_error;
QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, &json_error);
//没有错误的情况下
if(json_error.error == QJsonParseError::NoError) {
if(parse_doucment.isObject()) {
QJsonObject obj = parse_doucment.object();//转换为obj类型
if(obj.contains("name")) {
QJsonValue name_value = obj.take("name");
if(name_value.isString()) {
QString name = name_value.toString();
qDebug()<<"name:"<<name;
}
}
if(obj.contains("version")) {
QJsonValue version_value = obj.take("version");
if(version_value.isDouble()) {
int version = version_value.toVariant().toInt();
qDebug()<<"version:"<<version;
}
}
if(obj.contains("windows")){
QJsonValue version_value = obj.take("windows");
if(version_value.isBool()) {
bool flag = version_value.toBool();
qDebug()<<"flag:"<<flag;
}
}
}
}
}
最后打印出来的值为:
json_str "{\"name\":\"Qt\",\"version\":5,\"windows\":true}"
name: "Qt"
version: 5
flag: true
4、在按钮2中使用的函数为:
void MainWindow::on_pushButton_2_clicked()
{
//写入键值对
QJsonArray json;
json.insert(0, QString("Qt"));//只是写入值
json.insert(1, QString("version"));
json.insert(2, true);
QJsonDocument document;
document.setArray(json);
QByteArray byte_array = document.toJson(QJsonDocument::Compact);
QString json_str(byte_array);//转换为字符串的格式
qDebug()<<"json_str2:"<<json_str;
//读取键值对的值
QJsonParseError json_error;
QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, &json_error);
if(json_error.error == QJsonParseError::NoError) {
if(parse_doucment.isArray()) {
QJsonArray array = parse_doucment.array();
int size = array.size();
for(int i=0; i<size; i++) {
QJsonValue value = array.at(i);
if(value.isString()){
QString name = value.toString();//这种表示就是将字符串格式的全部输出
qDebug()<<"name:"<<name;
}else if(value.isBool()){
bool flag = value.toBool();//这边就是将bool类型的数输出来
qDebug()<<"flag:"<<flag;
}
}
}
}
}
最后打印出来的值为:
json_str2: "[\"Qt\",\"version\",true]"
name: "Qt"
name: "version"
flag: true
5、按钮3中写入的函数为:
void MainWindow::on_pushButton_3_clicked()
{
//写入键值对的值
QString name = "张三";
QString version = "5";
QJsonObject data;
data.insert("name",name);
data.insert("version",version);
QJsonDocument document;
document.setObject(data);
QByteArray byte_array = document.toJson(QJsonDocument::Compact);//定义一个QJsonDocument的紧凑的输出,使用QJsonDocument::Compact方式写出
QString json_str(byte_array);
qDebug()<<"111"<<json_str;
}
最后打印出来的值为:111 "{\"name\":\"张三\",\"version\":\"5\"}"
使用JSON进行对数据的读写的操作完毕,后期有需要会继续更新
更多推荐


所有评论(0)