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工具网。
推荐阅读: