JSON是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成,在实际工作中,我们会使用qt解析json,但是也会遇到Qt解析json不成功得到情况,那这是怎么回事呢?下面来我们就来给大家讲解一下。
如果解析不了的话,肯定是没有正确解析,大家可以参考解析的主要步骤如下:
1、将来源数据转化为JsonDocument。可用它的构造函数,或setArray、setObject,或它的静态成员函数。
2、可用下列四函数判断它的最外层数据类型(一般是个对象):
bool isArray() const
bool isEmpty() const
bool isNull() const
bool isObject() const
3、知道类型后,用以下函数将它转化为json对象或json数组或Map
QJsonArray array() const
QJsonObject object() const
QVariant toVariant() const
一般方法
// 创建 QJsonParseError 对象,用来获取解析结果
QJsonParseError error;
// 使用静态函数获取 QJsonDocument 对象
QJsonDocument jsonDocument = QJsonDocument::fromJson(json.toUtf8(), & error);
// 根据解析结果进行处理
if (error.error == QJsonParseError::NoError)
{
if (!(jsonDocument.isNull() || jsonDocument.isEmpty()))
{
if (jsonDocument.isObject())
{
// ...
}
else if (jsonDocument.isArray())
{
// ...
}
}
}
else
{
// 检查错误类型
}以下是qt解析json实例:
json文件内容如下:
{
"result": [
[
"笔记本电脑包",
"174006.44952143155"
],
["笔记本电脑支架",
"10922.010325770798"
],
[
"笔记本电脑游戏本",
"5234.557238132601"
],
[
"笔记本电脑 轻薄便携 学生",
"63230.4791839193"
],
[
"笔记本电脑包14寸",
"60253.89348659004"
],
[
"笔记本电脑包 15.6英寸",
"12103.593989071038"
],
[
"笔记本电脑苹果",
"114121.56232963233"
],
[
"笔记本电脑女生款超薄",
"5894.598044196088"
],
[
"笔记本电脑超薄",
"15421.232512795516"
],
[
"笔记本电脑支架托架",
"14211.73642800944"
]
]
, "tmall": "笔记本电脑"
}解析代码如下:
// 解析json文件
QFile file(":/data.json");
file.open(QIODevice::ReadOnly | QIODevice::Text);
QString jsonValue = file.readAll();
file.close();
// 解析JSON字符串
QJsonParseError parseJsonErr;
QJsonDocument document = QJsonDocument::fromJson(jsonValue.toUtf8(), & parseJsonErr);
if (!(parseJsonErr.error == QJsonParseError::NoError))
{
qDebug() << tr("解析json文件错误!"); < p = "" >
return;
}
QJsonObject jsonObject = document.object();
if (jsonObject.contains(QStringLiteral("result")))
{
QJsonValue resultValueList = jsonObject.value(QStringLiteral("result"));
if (resultValueList.isArray())
{
QJsonArray array = resultValueList.toArray();
for (int i = 0; i < array.size(); i++)
{
QJsonValue sonArray = array.at(i);
if (sonArray.isArray())
{
QJsonArray grandsonArry = array.at(i)
.toArray();
for (int j = 0; j < grandsonArry.size(); j++)
{
QString str = grandsonArry.at(j)
.toString();
qDebug() << str;
}
}
}
}
}qDebug() << "tmall =" << jsonObject["tmall"].toString();
Xml文件qt如何读取?
一、读取:
如下所示,QFile打开文件后,使用QXmlStreamReader对文件进行读取,读取过程中是逐条语句读取,根据elementName来获取相应的属性。

二、写:writeStartDocument与writeEndDocument,writeStartElement与writeEndElement 必须成对出现。writeAttribute写element的属性。

XML文件格式是纯文本格式,如果大家想要用qt读取,可以按照以上的方法就可以将xml文件读取成功了!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。
推荐阅读: