2014-10-30 62 views
1

我在使用QJON对象解析JSON时遇到了麻烦。Qt和JSON资源解析 - 空QJSONDocument

我读了一个资源文件中引用的我的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解析失败的程序。

你有任何解释或线索吗?

感谢你所做的一切

+0

我认为你的json无效,你最后需要'}'。这是一个复制/粘贴错误还是这真的是你使用的JSON? – Iuliu 2014-10-30 09:47:12

+0

我可以说我讨厌自己,我想死吗?这是一个复制粘贴错误,但从我的旧项目到新的项目。而我坚持了3个小时:(对不起,浪费时间 – 2014-10-30 09:51:32

+0

寒意,每个人都有时会犯这样的错误...... – Iuliu 2014-10-30 10:12:08

回答

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" 
    } 
}