QJson的QJsonObject使用示例说明

关于QJson的QJsonObject使用示例说明

使用示例1的读写说明

写入Json

QByteArray JsonObjectTest::onJsonTestWrite_1()
{
	QJsonObject sceneJson;

	sceneJson.insert(QString("id"), QVariant(123).toJsonValue());
	sceneJson.insert(QString("name"), QVariant(QString("LiHua")).toJsonValue());

	QJsonObject subObject;
	subObject.insert(QString("game"), QVariant(QString("cs")).toJsonValue());
	subObject.insert(QString("sport"), QVariant(QString("run")).toJsonValue());

	sceneJson.insert(QString("Specialty"), subObject);

	QJsonDocument recordJsonDocument(sceneJson);
	QByteArray jsonShapeArray = recordJsonDocument.toJson(QJsonDocument::Indented);

	return jsonShapeArray;
}

产生的Json字符串内容如下

{
    "Specialty": {
        "game": "cs",
        "sport": "run"
    },
    "id": 123,
    "name": "LiHua"
}

读取该Json字符串

void JsonObjectTest::onJsonTestRead_1(const QByteArray& sceneArray)
{
	//QString sceneArrayString = QString(sceneArray);
	//QJsonParseError jsonError;
	//QJsonDocument recordJsonDocument = QJsonDocument::fromJson(sceneArrayString.toUtf8(), &jsonError);

	QJsonParseError jsonError;
	QJsonDocument recordJsonDocument = QJsonDocument::fromJson(sceneArray, &jsonError);
	QJsonObject sceneJsonObject = recordJsonDocument.object();

	int id;
	QString name;
	QString game;
	QString sport;

	if (sceneJsonObject.contains(QString("id"))&&(QVariant(sceneJsonObject.value(QString("id"))).canConvert<int>()))
	{
		id = QVariant(sceneJsonObject.value(QString("id"))).value<int>();
	}

	if (sceneJsonObject.contains(QString("name")) && (QVariant(sceneJsonObject.value(QString("name"))).canConvert<QString>()))
	{
		name = QVariant(sceneJsonObject.value(QString("name"))).value<QString>();
	}

	if (sceneJsonObject.contains(QString("Specialty")) && (sceneJsonObject.value(QString("Specialty")).isObject()))
	{
		QJsonObject subJsonObject = sceneJsonObject.value(QString("Specialty")).toObject();

		if (subJsonObject.contains(QString("game")) && (QVariant(subJsonObject.value(QString("game"))).canConvert<QString>()))
		{
			game = QVariant(subJsonObject.value(QString("game"))).value<QString>();
		}
		if (subJsonObject.contains(QString("sport")) && (QVariant(subJsonObject.value(QString("sport"))).canConvert<QString>()))
		{
			sport = QVariant(subJsonObject.value(QString("sport"))).value<QString>();
		}
	}
	return;
}

使用示例2的读写说明

写入Json数组

QByteArray JsonObjectTest::onJsonTestWrite_2()
{
	QJsonObject sceneJson;

	sceneJson.insert(QString("id"), QVariant(123).toJsonValue());
	sceneJson.insert(QString("name"), QVariant(QString("LiHua")).toJsonValue());

	QJsonArray subArray;

	QJsonObject subObject_1;
	subObject_1.insert(QString("game"), QVariant(QString("cs")).toJsonValue());
	subObject_1.insert(QString("sport"), QVariant(QString("run")).toJsonValue());

	QJsonObject subObject_2;
	subObject_2.insert(QString("game"), QVariant(QString("EVE")).toJsonValue());
	subObject_2.insert(QString("sport"), QVariant(QString("Basketball")).toJsonValue());

	subArray.append(subObject_1);
	subArray.append(subObject_2);

	sceneJson.insert(QString("Specialty"), subArray);

	QJsonDocument recordJsonDocument(sceneJson);
	QByteArray jsonShapeArray = recordJsonDocument.toJson(QJsonDocument::Indented);

	return jsonShapeArray;
}

生成的Json字符串如下所示

{
    "Specialty": [
        {
            "game": "cs",
            "sport": "run"
        },
        {
            "game": "EVE",
            "sport": "Basketball"
        }
    ],
    "id": 123,
    "name": "LiHua"
}

读取该Json字符串

void JsonObjectTest::onJsonTestRead_2(const QByteArray& sceneArray)
{
	//QString sceneArrayString = QString(sceneArray);
	//QJsonParseError jsonError;
	//QJsonDocument recordJsonDocument = QJsonDocument::fromJson(sceneArrayString.toUtf8(), &jsonError);

	QJsonParseError jsonError;
	QJsonDocument recordJsonDocument = QJsonDocument::fromJson(sceneArray, &jsonError);
	QJsonObject sceneJsonObject = recordJsonDocument.object();

	int id;
	QString name;
	QStringList gameList;
	QStringList sportList;

	if (sceneJsonObject.contains(QString("id")) && (QVariant(sceneJsonObject.value(QString("id"))).canConvert<int>()))
	{
		id = QVariant(sceneJsonObject.value(QString("id"))).value<int>();
	}

	if (sceneJsonObject.contains(QString("name")) && (QVariant(sceneJsonObject.value(QString("name"))).canConvert<QString>()))
	{
		name = QVariant(sceneJsonObject.value(QString("name"))).value<QString>();
	}

	if (sceneJsonObject.contains(QString("Specialty")) && (sceneJsonObject.value(QString("Specialty")).isArray()))
	{
		QJsonArray subJsonArray = sceneJsonObject.value(QString("Specialty")).toArray();
		int subJsonArraySize = subJsonArray.size();

		for (int i = 0; i < subJsonArraySize;i++) {

			QJsonValue subJsonValue = subJsonArray.at(i);

			if (subJsonValue.isObject()) {
				QJsonObject subJsonObject = subJsonValue.toObject();

				if (subJsonObject.contains(QString("game")) && (QVariant(subJsonObject.value(QString("game"))).canConvert<QString>()))
				{
					gameList.append(QVariant(subJsonObject.value(QString("game"))).value<QString>());
				}
				if (subJsonObject.contains(QString("sport")) && (QVariant(subJsonObject.value(QString("sport"))).canConvert<QString>()))
				{
					sportList.append(QVariant(subJsonObject.value(QString("sport"))).value<QString>());
				}
			}
		}
	}
	return;
}
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值