Qt和JSON资源解析 - 清空QJSONDocument

时间:2014-10-30 09:36:19

标签: c++ json qt qjson

我在使用QJON对象解析JSON时遇到了麻烦。

我读了一个资源文件中引用的json文件,读取内容并尝试从我得到的QString初始化QJSONDocument。它似乎无法正常工作

以下是我使用的代码:

QFile myFile(":/mime/iconemapping.json");

myFile.open(QIODevice::ReadOnly);

QJsonDocument jsonContent;
QJsonObject root;
QString jsonString = QString::fromUtf8(myFile.readAll()).simplified();

jsonContent = QJsonDocument::fromJson(jsonString.toUtf8());

root = jsonContent.object();

QJsonObject ext = root["extensions"].toObject();

QStringList listeCle = ext.keys();
int s = listeCle.size();

for (int i = 0; i < listeCle.size(); i++) {
    QString cle = listeCle.at(i).toLocal8Bit().constData();
    MAP_ICONE_MIME.insert(cle, ext[cle].toString());
}

myFile.close();

在我尝试QJSONDocument::fromJson()之前,我的jsonString包含:{ "extensions" : { ".7z" : ":/mime/7zip.png", ".ace" : ":/mime/ace.png", ".ai" : ":/mime/ai.png", ".eps" : ":/mime/ai.png", ".alg" : ":/mime/algobox.png", ".rar" : ":/mime/archive.png", ".aiff" : ":/mime/audio-x-generic.png"}。 (有更多的数据,但我认为你得到了它。)

程序不会意外停止,但listeCle.size()始终为0。 我尝试直接访问ext[".7z"].toString(),但我仍然得到""

我可能犯了一个巨大的错误,但直到现在,这是该程序中唯一失败的JSON解析。

你有任何解释或线索吗?

谢谢你的一切

1 个答案:

答案 0 :(得分:0)

所以JSON无效。我建议将来使用http://jsonformatter.curiousconcept.com/,这是一个很棒的网站。

{
    "extensions":{
        ".7z":":/mime/7zip.png",
        ".ace":":/mime/ace.png",
        ".ai":":/mime/ai.png",
        ".eps":":/mime/ai.png",
        ".alg":":/mime/algobox.png",
        ".rar":":/mime/archive.png",
        ".aiff":":/mime/audio-x-generic.png"
    }
}