一、示例JSON文件内容 下方为本文所使用的json文件的内容,其中包含字符串、数值、布尔、null、对象、数组、组合类型等(读取方式在本文第三节) { "str": "strVa
下方为本文所使用的json文件的内容,其中包含字符串、数值、布尔、null、对象、数组、组合类型等(读取方式在本文第三节)
{
"str": "strVal",
"number": 88,
"bool": true,
"null": null,
"object": {
"key1": "Val1",
"key2": "Val2",
"key3": "Val3"
},
"array": [
"elem1",
"elem2",
"elem3",
"elem4"
],
"combination": [{
"name": "Google",
"url": "Http://www.google.com"
},
{
"name": "Baidu",
"url": "http://www.baidu.com"
},
{
"name": "SoSo",
"url": "http://www.SoSo.com"
}
]
}
QFile file("./jsonTest.json"); //创建QFile对象,并指定json文件路径
//打开json文件并判断(不成功则返回0)
if(!file.open(QIODevice::ReadOnly))
return 0;
//将文件内容读取到数组中
QByteArray data(file.readAll());
file.close(); //关闭文件
QJsonParseError jError; //创建QJsonParseError对象
//使用QJsonDocument的fromJson函数读取json串,并将QJsonParseError对象传入获取错误值
QJsonDocument jDoc = QJsonDocument::fromJson(data, &jError);
//判断QJsonParseError对象获取的error是否包含错误,包含则返回0
if(jError.error != QJsonParseError::NoError)
return 0;
获取QJsonObject对象
QJsonObject jObj = jDoc.object();
获取常规类型的值
//读取字符串
QString strVal = jObj["str"].toString();
//读取数值(对应的数值转换成对应的类型)
int numVal = jObj["number"].toInt();
//读取逻辑值
bool boolVal = jObj["bool"].toBool();
//读取空值(因其没有对应的to类型函数,可使用下方类型接收或isNull()函数判断)
QVariant nullVal = jObj["null"].toVariant();
获取对象类型及其中的值
//对象类型需要使用新的QJsonObject对象存放,然后使用新的QJsonObject获取其中值
QJsonObject jObj2 = jObj["object"].toObject();
//获取jObj2中指定键的值(值对应的类型直接使用对应函数转)
QString key1Val = jObj2["key1"].toString();
获取数组类型及其中的值
//对象类型需要使用QJsonArray对象存放
QJsonArray jarr = jObj["array"].toArray();
//获取jArr中指定下标的值(该值可通过如下方式接收或使用QJsonValue的对象接收)
QString arr1Val = jArr.at(0).toString();
读取组合类型的值
//组合对象第一层类型为数组,需要使用QJsonArray对象存放
QJsonArray jArr2 = jObj["combination"].toArray();
//数组中存放的对象,使用QJsonObject接收
QJsonObject jObj3 = jArr2.at(0).toObject();
//获取对象中的指定键的值
QString name = jObj3["name"].toString();
建议学习前先了解一下Json文件格式,其次为在编写代码的过程中需要细心,类似的对象名容易混淆
到此这篇关于Qt读取Json文件的文章就介绍到这了,更多相关Qt读取Json文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
相关文章
--结束END--
本文标题: Qt读取Json文件的方法详解(含源码+注释)
本文链接: https://lsjlt.com/news/169837.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0