2014-10-30 4 views
1

QJON 객체를 사용하여 JSON을 파싱하는 중 문제가 발생했습니다.Qt 및 JSON 리소스 파싱 - 빈 QJSONDocument

리소스 파일에서 참조 된 json 파일을 읽었습니다. 내용을 읽고 QString에서 QJSONDocument를 초기화 해 봅니다. { "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"} : 나는 QJSONDocument::fromJson() 내 jsonString 포함하려고하기 전에

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(); 

: 그리고 내가 사용하는 코드를 여기에

작동하지 것 같다. (더 많은 데이터가 있지만 당신이 그것을 얻는다 고 생각합니다).

프로그램이 예기치 않게 중단하지 않고 listeCle.size() 내가 ext[".7z"].toString()에 직접 액세스를 시도하지만 난 여전히 결과로 ""을 얻을 항상 0 입니다.

아마도 엄청난 실수를 저지른 것 같습니다.하지만 지금까지는 프로그램에서 실패한 유일한 JSON 구문 분석입니다.

설명이나 실마리가 있습니까?

모든 것을

+0

json이 유효하지 않다고 생각합니다. 끝에 '}'이 필요합니다. 이것은 복사/붙여 넣기 오류입니까, 아니면 정말로 사용중인 json입니까? – Iuliu

+0

내가 싫어하고 죽고 싶다고 말할 수 있니? 그것은 복사 붙여 넣기 오류지만, 내 오래된 프로젝트에서 새로운 하나입니다. 그리고 나는 3 시간 동안 그것에 붙어있다 : (시간 낭비를 위해 유감스럽게도 –

+0

진정, 모두가 때때로 이런 실수를한다 ... – Iuliu

답변

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