|
沙发
楼主 |
发表于 2021-2-23 10:23:04
|
只看该作者
- {
- "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
- ]
- }
- 构造此json:
- // 构建 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;
- 解析此json:
- QJsonParseError jsonError;
- QJsonDocument doucment = QJsonDocument::fromJson(byteArray, &jsonError); // 转化为 JSON 文档
- if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) { // 解析未发生错误
- if (doucment.isObject()) { // JSON 文档为对象
- QJsonObject object = doucment.object(); // 转化为对象
- if (object.contains("Name")) {
- QJsonValue value = object.value("Name");
- if (value.isString()) {
- QString strName = value.toString();
- qDebug() << "Name : " << strName;
- }
- }
- if (object.contains("Company")) {
- QJsonValue value = object.value("Company");
- if (value.isString()) {
- QString strCompany = value.toString();
- qDebug() << "Company : " << strCompany;
- }
- }
- if (object.contains("From")) {
- QJsonValue value = object.value("From");
- if (value.isDouble()) {
- int nFrom = value.toVariant().toInt();
- qDebug() << "From : " << nFrom;
- }
- }
- if (object.contains("Version")) {
- QJsonValue value = object.value("Version");
- if (value.isArray()) { // Version 的 value 是数组
- QJsonArray array = value.toArray();
- int nSize = array.size();
- for (int i = 0; i < nSize; ++i) {
- QJsonValue value = array.at(i);
- if (value.isDouble()) {
- double dVersion = value.toDouble();
- qDebug() << "Version : " << dVersion;
- }
- }
- }
- }
- if (object.contains("Page")) {
- QJsonValue value = object.value("Page");
- if (value.isObject()) { // Page 的 value 是对象
- QJsonObject obj = value.toObject();
- if (obj.contains("Home")) {
- QJsonValue value = obj.value("Home");
- if (value.isString()) {
- QString strHome = value.toString();
- qDebug() << "Home : " << strHome;
- }
- }
- if (obj.contains("Download")) {
- QJsonValue value = obj.value("Download");
- if (value.isString()) {
- QString strDownload = value.toString();
- qDebug() << "Download : " << strDownload;
- }
- }
- if (obj.contains("Developers")) {
- QJsonValue value = obj.value("Developers");
- if (value.isString()) {
- QString strDevelopers = value.toString();
- qDebug() << "Developers : " << strDevelopers;
- }
- }
- }
- }
- }
- }
复制代码 |
|