一、读取Json
{
"key":"value"
}
#include <QFile>
#include <QDebug>
#include <QByteArray>
#include <QJsonDocument>
#include <QJsonObject>
QFile file("testJson.json");
file.open(QIODevice::ReadOnly);
QByteArray json = file.readAll();
file.close();
QJsonParseError error;
QJsonDocument doc = QJsonDocument::fromJson(json, &error);
QJsonObject obj = doc.object();
qDebug()<<obj.value("key").toString();
如果有多层,则将第一次得到的QJsonValue
转成QJsonObject
,继续取值
{
"title":{
"key":"value"
}
}
QJsonObject obj = doc.object();
QJsonObject obj2 = obj.value("title").toObject();
qDebug()<<obj2.value("key").toString();
二、写入Json
#include <QFile>
#include <QJsonDocument>
QMap<QString, QVariant> json;
json.insert("usr", "qwer");
json.insert("pwd", "123");
QJsonDocument doc = QJsonDocument::fromVariant(json);
QFile file("testJson.json");
file.open(QIODevice::WriteOnly);
file.write(doc.toJson());//转换成QByteArray
file.close();
{
"pwd": "123",
"usr": "qwer"
}
同样的,如果是多层的,则要让QMap
的QVariant
为另一个QMap
QMap<QString, QVariant> json;
json.insert("usr", "qwer");
json.insert("pwd", "123");
QMap<QString, QVariant> title;
title.insert("json",json);
QJsonDocument doc = QJsonDocument::fromVariant(title);
QFile file("testJson.json");
file.open(QIODevice::WriteOnly);
file.write(doc.toJson());
file.close();
{
"json": {
"pwd": "123",
"usr": "qwer"
}
}