打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
qt5解析json
1、将对应的字符串生成QJsonDocument对象。
2、判断QJsonDocument对象是QJsonObject还是QJsonArray类型。
3、如果是QJsonObject类型,获取一个QJsonObject对象,然后根据QJsonObject的api函数进行解析。
4、如果是QJsonArray类型,获取一个QJsonArray对象,然后根据QJsonArray的api函数进行解析。
5、从以上步骤获取对象后取得QJsonValue类型的数据。
6、迭代分解数据获取各个值。

例子:


#include <QtCore/QCoreApplication>
#include <QtDebug>
#include <QString>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonValue>
#include <QJsonParseError>
#include <QJsonObject>
#include <QStringList>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString jsonStr = "{\"name\":\"mxq\",\"number\":1,\"array\":[23,\"asdf\",true]}";
qDebug()<<"test json!";
QJsonParseError jsonErr;
QJsonDocument myjsonDoc1 = QJsonDocument::fromJson(jsonStr.toLatin1(),&jsonErr);

if (jsonErr.error == QJsonParseError::NoError)
{
if (myjsonDoc1.isEmpty())
{
qDebug()<<"the json is empty!";
}
if (myjsonDoc1.isObject())
{
qDebug()<<"json is object";
QJsonObject jobj = myjsonDoc1.object();
QStringList jsonkeylist = jobj.keys();
qDebug()<<"jsonkeylist="<<jsonkeylist.count();
for (int i=0;i<jsonkeylist.count();i++)
{
qDebug()<<jsonkeylist.at(i)<<"\n";
}
QJsonObject::iterator it = jobj.begin();
while(it != jobj.end())
{
switch (it.value().type())
{
case QJsonValue::String:
qDebug()<<"type is String!";
qDebug()<<it.key()<<"="<<it.value().toString();
break;
case QJsonValue::Array:
{

qDebug()<<"type is array!";
qDebug()<<it.key()<<"="<<it.value().toArray();
QJsonArray subarray = it.value().toArray();
qDebug()<<"subarray count = "<<subarray.count();
qDebug()<<"index 1 ="<<subarray.at(0).toDouble();
qDebug()<<"index 2 ="<<subarray.at(1).toString();
qDebug()<<"index 3 ="<<subarray.at(2).toBool();

break;
}
case QJsonValue::Bool:
qDebug()<<"type is bool!";
qDebug()<<it.key()<<"="<<it.value().toBool();
break;
case QJsonValue::Double:
qDebug()<<"type is Double!";
qDebug()<<it.key()<<"="<<it.value().toDouble();
break;
case QJsonValue::Object:
qDebug()<<"type is Object!";
qDebug()<<it.key()<<"="<<it.value().toObject();
break;
case QJsonValue::Null:
qDebug()<<"type is null!";
qDebug()<<it.key()<<"=null";
break;
case QJsonValue::Undefined:
qDebug()<<"type is Undefined!";
break;
}
it++;
}
}
}

return a.exec();
}

以上为本人的一个测试程序,main.c的内容。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【Qt】Qt中QJsonObject类
json基础知识与Qt中的应用
Qt之JSON生成与解析
基于QT5 HTTP GET方式获取天气信息
QT5.5或QT5.6与echarts实现动态图表
Json Data Objects
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服