1、写json文件
需要引用
#include <QJsonDocument>
#include <QJsonObject>
#include <QByteArray>
#include <QJsonArray>
#include <QFile>
#include <QDebug>
void createObject(QJsonObject &obj, QString version, QString path)
{
obj.insert("version", version);
obj.insert("gds", path);
QJsonArray arraySub;
QJsonObject subsub;
subsub.insert("x", 0);
subsub.insert("y", 0);
subsub.insert("pixel", 0);
subsub.insert("path", "./");
subsub.insert("offsetX", 0);
subsub.insert("offsetY", 0);
arraySub.append(subsub);
obj.insert("image", arraySub);
}
QJsonArray
obj;
QJsonObject firstSub;
QJsonObject secondSub;
createObject(firstSub, "Manual", "xxx");
createObject(secondSub, "Auto", "xxx");
obj.append(firstSub);
obj.append(secondSub);
QJsonDocument doc;
doc.setArray(obj);
QByteArray data = doc.toJson();
//json写入文件
QFile file("test1.json");
file.open(QIODevice::WriteOnly);
file.write(data);
file.close();
结果为
[
{
"gds": "xxx",
"image": [
{
"offsetX": 0,
"offsetY": 0,
"path": "./",
"pixel": 0,
"x": 0,
"y": 0
}
],
"version": "Manual"
},
{
"gds": "xxx",
"image": [
{
"offsetX": 0,
"offsetY": 0,
"path": "./",
"pixel": 0,
"x": 0,
"y": 0
}
],
"version": "Auto"
}
]
2、读取json文件
{
"name":"value",
"secondName":{"thirdName":"thirdValue"},
"recoveryPrimaryNode":[
{"id":"1","iconTxt":"图片","iconName":"1.jpg"},
{"id":"2","iconTxt":"视频","iconName":"2.jpg"},
{"id":"3","iconTxt":"文本","iconName":"3.jpg"},
{"id":"4","iconTxt":"压缩包","iconName":"4.jpg"}]
}
读取
QFile file("temo11.json");
file.open(QIODevice::ReadOnly | QIODevice::Text);
QString value = file.readAll();
file.close();
QJsonParseError parseJsonErr;
QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(),&parseJsonErr);
if(!(parseJsonErr.error == QJsonParseError::NoError))
{
qDebug()<<"解析json文件错误!";
}
QJsonObject jsonObject = document.object();
qDebug()<<"jsonObject[name]=="<<jsonObject["name"].toString();
if(jsonObject.contains(QStringLiteral("secondName")))
{
QJsonValue jsonValueList = jsonObject.value(QStringLiteral("secondName"));
QJsonObject item = jsonValueList.toObject();
qDebug()<<"item[thirdName]=="<<item["thirdName"].toString();
}
if(jsonObject.contains(QStringLiteral("recoveryPrimaryNode")))
{
QJsonValue arrayValue = jsonObject.value(QStringLiteral("recoveryPrimaryNode"));
if(arrayValue.isArray())
{
QJsonArray array = arrayValue.toArray();
for(int i=0;i<array.size();i++)
{
QJsonValue iconArray = array.at(i);
QJsonObject icon = iconArray.toObject();
QString id = icon["id"].toString();
QString iconTxt = icon["iconTxt"].toString();
QString iconName = icon["iconName"].toString();
qDebug()<<"id="<<id<<"iconTxt="<<iconTxt<<"iconName="<<iconName;
}
}
}
读取结果