qt5解析json
2019-03-17
1、将对应的字符串生成QJsonDocument对象。
2、判断QJsonDocument对象是QJsonObject还是QJsonArray类型。
3、如果是QJsonObject类型,获取一个QJsonObject对象,然后根据QJsonObject的api函数进行解析。
4、如果是QJsonArray类型,获取一个QJsonArray对象,然后根据QJsonArray的api函数进行解析。
5、从以上步骤获取对象后取得QJsonValue类型的数据。
6、迭代分解数据获取各个值。
例子:
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString jsonStr = "{\"name\":\"mxq\",\"number\":1,\"array\":[23,\"asdf\",true]}";
qDebug()<
QJsonParseError jsonErr;
QJsonDocument myjsonDoc1 = QJsonDocument::fromJson(jsonStr.toLatin1(),&jsonErr);
if (jsonErr.error == QJsonParseError::NoError)
{
if (myjsonDoc1.isEmpty())
{
qDebug()<
}
if (myjsonDoc1.isObject())
{
qDebug()<
QJsonObject jobj = myjsonDoc1.object();
QStringList jsonkeylist = jobj.keys();
qDebug()<
for (int i=0;i
{
qDebug()<
}
QJsonObject::iterator it = jobj.begin();
while(it != jobj.end())
{
switch (it.value().type())
{
case QJsonValue::String:
qDebug()<
qDebug()<
break;
case QJsonValue::Array:
{
qDebug()<
qDebug()<
QJsonArray subarray = it.value().toArray();
qDebug()<
qDebug()<
qDebug()<
qDebug()<
break;
}
case QJsonValue::Bool:
qDebug()<
qDebug()<
break;
case QJsonValue::Double:
qDebug()<
qDebug()<
break;
case QJsonValue::Object:
qDebug()<
qDebug()<
break;
case QJsonValue::Null:
qDebug()<
qDebug()<
break;
case QJsonValue::Undefined:
qDebug()<
break;
}
it++;
}
}
}
return a.exec();
}
以上为本人的一个测试程序,main.c的内容。
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。
http://www.pinlue.com/style/images/nopic.gif