不啰嗦,直接上代码,参考了部分网友的方法,自已另外也完善了下,讲json换成map以及嵌套的情况下也做好了
参考的地址是://http://www.cnblogs.com/Jim-william/p/5005738.html
qDebug()<<"analisisJson json ";
QJsonDocument document;
QString json_str(arrayData); //array通过参数传递的,类型是QByteArray
QVariantMap dataMap;
QJsonParseError json_error;
QJsonDocument parse_doucment = QJsonDocument::fromJson(arrayData, &json_error);
if(json_error.error == QJsonParseError::NoError)
{
if(parse_doucment.isObject())
{
QJsonObject obj = parse_doucment.object();
QJsonValue version_value;
QVariant strTemp;
QVariant tempArray;
foreach (QString key , obj.keys())
{
version_value = obj.take(key);
strTemp = version_value.toVariant();
qDebug()<<"strTemp ::: "<<strTemp;
if(version_value.isArray()) //嵌套,如果多重嵌套建议直接用逆归函数,此处默认就一重嵌套
{
QVariantList list = strTemp.toList();
for ( int i = 0; i < list.size(); i++)
{
QVariantMap listData = list.at(i).toMap();
dataMap.unite(listData);
}
}
else
{
dataMap.insert(dataMap.end(),key,version_value);
}
}
}
}
qDebug()<<" \n"<<dataMap.values() <<"\n "<< dataMap.keys();
此种方法主要限制了类型,只有QByteArray类型转化json然后再解析为map类型,因为不清楚能否直接将QByteArray类型直接转化为QMaP,所以想到这种方法,敬请订正。(此处我主要是为了方便处理网站传回的数据,由于我获取的数据是replay->readAll(),虽然是按照json模式传送的,但是接收的时候只有QByteArray和QString两种类型可选,无奈只能如此方法去达到我的目的)