用于封装JSON值
负责封装JSON对象,是键/值对列表,其中键是惟一的字符串,值由QJsonValue表示。
初始化方式:
QJsonObject jsonObject;
jsonObject["key1"] = 1;
jsonObject["key2"] = 6.6;
jsonObject.insert("key3", "Hello world");
jsonObject["array"] = QJsonArray({1, 2, 3});
//或者
QJsonObject jsonObject
{
{"key1", 1},
{"key2", 6.6},
{"key3", "Hello world"},
{"array", QJsonArray({1, 2, 3})}
};
负责封装JSON数组,JSON数组是一个值列表,接口与QVariantList类似,QJsonArray与QVariantList可以互相转换。
QJsonList操作于QList相似,都具有size()、insert()和removeAt()等操作,还可以使用标准的C++迭代器模式对其内容进行迭代。
直接赋值使用:
QJsonArray jsonArray = { 1, 6.6, QString("Hello world") };
接口操作使用:
QJsonArray jsonArray;
jsonArray.append(1);
jsonArray.append(6.6);
jsonArray.insert(2, "Hello world");
// 使用QJsonDocument设置该json对象
QJsonDocument jsonDoc;
jsonDoc.setObject(jsonObject);
// 将json以文本形式写入文件并关闭文件。
file.write(jsonDoc.toJson());
file.close();
{
"Company": "Digia",
"From": 1991,
"Name": "Qt",
"Page": {
"Developers": "https://www.qt.io/developers/",
"Download": "https://www.qt.io/download/",
"Home": "https://www.qt.io/"
},
"Version": [
4.8,
5.2,
5.7
]
}
其中 "Page"的值是一个QJsonObject对象,"Version"是一个列表
// 构建 Json 数组 - Version
QJsonArray versionArray;
versionArray.append(4.8);
versionArray.append(5.2);
versionArray.append(5.7);
// 构建 Json 对象 - Page
QJsonObject pageObject;
pageObject.insert("Home", "https://www.qt.io/");
pageObject.insert("Download", "https://www.qt.io/download/");
pageObject.insert("Developers", "https://www.qt.io/developers/");
// 构建 Json 对象
QJsonObject json;
json.insert("Name", "Qt");
json.insert("Company", "Digia");
json.insert("From", 1991);
json.insert("Version", QJsonValue(versionArray));
json.insert("Page", QJsonValue(pageObject));
// 构建 Json 文档
QJsonDocument document;
document.setObject(json);
QByteArray byteArray = document.toJson(QJsonDocument::Compact);
QString strJson(byteArray);
qDebug() << strJson;
// QString >> QJson
QJsonObject getJsonObjectFromString(const QString jsonString){
QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonString.toLocal8Bit().data());
if( jsonDocument.isNull() ){
qDebug()<< "===> please check the string "<< jsonString.toLocal8Bit().data();
}
QJsonObject jsonObject = jsonDocument.object();
return jsonObject;
}
// QJson >> QString
QString getStringFromJsonObject(const QJsonObject& jsonObject){
return QString(QJsonDocument(jsonObject).toJson());
}