#include "mainwindow.h"
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonParseError>
#include <QJsonValue>
#include <QDebug>
#include <QFile>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
/*
{
"encoding": "UTF-8",
"indent": {
"length": 3,
"use_space": true
},
"plug-ins": [
"python",
"C++",
"Java"
]
}
*/
//生成JSON
//打开文件
QFile fileWrite("jsonTest.json");
if(!fileWrite.open(QFile::WriteOnly)){
qDebug() << "fileWrite open failed!";
}
QJsonObject rootObj;
rootObj["encoding"] = "UTF-8";
QJsonArray plugArr;
plugArr << "python" << "C++" << "Java";
rootObj["plug-ins"] = plugArr;
QJsonObject indentObj;
indentObj.insert("length",3);
indentObj.insert("use_space",true);
rootObj["indent"] = indentObj;
QJsonDocument josnDocument;
QByteArray jsonArray;
josnDocument.setObject(rootObj);
if(!josnDocument.isNull()){
jsonArray = josnDocument.toJson();
fileWrite.write(jsonArray);
qDebug() << jsonArray; //Indented:表示自动添加/n回车符
}
fileWrite.close();
//解析JSON
//打开文件
QFile fileRead("jsonTest.json");
if(!fileRead.open(QFile::ReadOnly)){
qDebug() << "fileRead open failed!";
}
QJsonParseError jsonError;
QJsonDocument jsonDocument = QJsonDocument::fromJson(fileRead.readAll(),&jsonError);
if(QJsonParseError::NoError == jsonError.error){
if(!(jsonDocument.isNull() || jsonDocument.isEmpty()))
{
if(jsonDocument.isObject()){
QVariantMap result = jsonDocument.toVariant().toMap();
qDebug() << "encoding:" << result["encoding"].toString();
qDebug() << "plug-ins:" ;
foreach (QVariant plugin, result["plug-ins"].toList()) {
qDebug() << "\t-" << plugin.toString();
}
QVariantMap nestedMap = result["indent"].toMap();
qDebug() << "length" << nestedMap["length"].toInt();
qDebug() << "use_space:" << nestedMap["use_space"].toBool();
}
}
}else {
qFatal(jsonError.errorString().toUtf8().constData());
exit(1);
}
fileRead.close();
}
QT使用 QJsonDocument 处理 JSON
最新推荐文章于 2024-04-23 17:21:57 发布