1
JSON解析实例(Qt含源码)
source link: https://blog.51cto.com/u_15696298/5450150
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
JSON解析
Qt中内置了一个QJsonDocument类用来处理json文件,以及json字符串。解析思路先将string加载到QJsonDocument中,然后将其逐层解析。json的格式包含两种,1)对象,2)数组
名字 | 解析 |
---|---|
QJsonDocument | 一个封装完整JSON文档的类,可以从UTF-8编码的基于文本的表示以及Qt自己的二进制格式读取和写入该文档 |
QJsonObject | 是键值对的列表,其中键是唯一的字符串,值由QJsonValue表示。 |
QJsonArray | JSON数组是一个值列表。可以通过从数组中插入和删除QJsonValue来操作该列表。 |
QJsonValue | JSON是一种存储结构化数据的格式。它有6种基本数据类型:bool、double、string、array、object、null |
QJsonParseError | 用于在JSON解析期间报告错误 |
{"Name":"小明","age":18}
Qt json解析对象 代码
void MainWindow::parseObject()
{
QString str = "{\"Name\":\"小明\",\"Age\":18}";
QJsonDocument jdoc = QJsonDocument::fromJson(str.toUtf8());
QJsonObject jobject = jdoc.object();
QJsonValue jvalue_name = jobject.value("Name");
qInfo() << jvalue_name.toString();
QJsonValue jvalue_age = jobject.value("Age");
qInfo() << jvalue_age.toInt();
///////// 遍历 /////////////
foreach (auto item, jobject.keys()) {
qInfo() << "key:" << item;
QJsonValue jvalue = jobject.value(item);
qInfo() << "value:" << jvalue.toVariant();
}
}
"小明"
18
key: "Age"
value: QVariant(double, 18)
key: "Name"
value: QVariant(QString, "小明")
["apple","orange","banana","watermelon"]
Qt json解析数组代码
void MainWindow::parseArray()
{
QString str = "[\"apple\",\"orange\",\"banana\",\"watermelon\"]";
QJsonDocument jdoc = QJsonDocument::fromJson(str.toUtf8());
QJsonArray jArray = jdoc.array();
// item 为QJsonValue类型
foreach (auto item, jArray) {
qInfo() << item.toString();
}
}
"apple"
"orange"
"banana"
"watermelon"
数组对象混合解析
{"Lists":["apple","orange"]}
Qt json解析代码
void MainWindow::parseObjectArray()
{
QString str = "{\"Lists\":[\"apple\",\"orange\"]}";
QJsonDocument jdoc = QJsonDocument::fromJson(str.toUtf8());
QJsonObject jObject = jdoc.object();
QJsonValue jLists = jObject.value("Lists");
QJsonArray jArray = jLists.toArray();
// item 为QJsonValue类型
foreach (auto item, jArray) {
qInfo() << "value:" << item.toString();
}
}
value: "apple"
value: "orange"
对象数组混合解析
[{"Name":"小明","age":18},{"Name":"小王","age":20}]
Qt 解析json代码
void MainWindow::parseArrayObject()
{
QString str =
"[{\"Name\":\"小明\",\"age\":18},{\"Name\":\"小王\",\"age\":20}]";
QJsonDocument jdoc = QJsonDocument::fromJson(str.toUtf8());
QJsonArray jLists = jdoc.array();
foreach (auto item, jLists) {
QJsonObject item_object = item.toObject();
qInfo() << "===============================";
qInfo() << "name:" << item_object.value("Name").toString();
qInfo() << "age:" << item_object.value("age").toDouble();
}
}
===============================
name: "小明"
age: 18
===============================
name: "小王"
age: 20
公众号:【qt小王子】
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK