我試圖讓qt 5.1中json的包裝類的開始,我正在工作在一個函數上,它將檢查輸入的var是一個QVariantMap還是一個QVariant,並且一切都很好,直到我進入muli維數組的第二個層次。這裏是我的數組結構和類代碼。'operator []'不匹配(操作數類型是'QVariant'和'const char [2]')QVariant/QVariantMap
JsonHelper jh;
QVariantMap obj = jh.getJsonObjectVarientMap(data);
這使我的問題,我只是用 「目標文件」 或 「OBJ [」 1 「]」 沒有問題,只有當我
// obj["4"]["3"] this causes the problems
qDebug() << "Your returned val is : " << jh.keySearchVal(obj["4"]["3"],arr_index_txt);
QMap<QString,QVariant> mp = obj["4"].toMap();
foreach(QString key,mp.keys())
{
// this works ok
qDebug() << "key : " << key << " : val : " << mp[key];
}
QVariantMap JsonHelper::getJsonObjectVarientMap(QString in)
{
QJsonDocument d = QJsonDocument::fromJson(in.toUtf8());
return d.object().toVariantMap();
}
QVariant JsonHelper::keySearchVal(QVariant source, QString key)
{
QString type(source.typeName());
if(type=="QVariantMap")
{
QMap<QString, QVariant> map = source.toMap();
foreach(QString key_inner,map.keys())
{
QVariant in = map[key_inner];
if(key_inner==key)
{
return getVariantVal(in);
}
}
}
return "";
}
QVariant JsonHelper::keySearchVal(QVariantMap source, QString key)
{
foreach(QString key_inner,source.keys())
{
if(key_inner==key)
{
return source[key_inner];
}
}
return "";
}
QVariant JsonHelper::getVariantVal(QVariant in)
{
qDebug() << "from variant";
QString type(in.typeName());
if(type=="QVariantMap")
{
return in.toMap();
}
return in;
}
非常感謝您的幫助。 – TheMan68
這只是我班的開始,我不想浪費太多時間,這就是爲什麼我把它放在這裏沒有太多的錯誤閱讀等等,非常感謝。祝你有美好的一天 – TheMan68
@ TheMan68:很棒,歡迎。 – lpapp