2010-09-17 53 views
2

我正在使用QJson解析。但是我遇到了一些問題。我已經使用以下代碼:在Mac中使用QJSON - 獲取一些問題

void CityBook ::getCityList(QUrl url) 
{ 
     //!connect(cityReply, SIGNAL(readyRead()),this, SLOT(httpReadyRead())); 
     cityGuideNetworkAccessManager = new QNetworkAccessManager(this); 
     connect(cityGuideNetworkAccessManager, SIGNAL(finished(QNetworkReply*)), 
      this, SLOT(httpReadyRead(QNetworkReply*))); 
    QNetworkRequest cityRequest(url); 
    cityGuideNetworkAccessManager->get(cityRequest); 
} 

void CityBook::httpReadyRead(QNetworkReply *reply) 
{ 
    QMessageBox::information(this, tr("HTTP"), 
           tr(reply->readAll()),QMessageBox::NoButton 
          ); 
    QJson::Parser parser; 
    bool ok; 
    const QByteArray &resultbyte = reply->readAll(); 
    qDebug() << resultbyte; 
    QVariant result1 = parser.parse(reply->readAll(), &ok); 
    qDebug() << result1; 
    QVariantList result=parser.parse(resultbyte,&ok).toList(); 
    qDebug()<< result.size(); 
    if (!ok) 
    { 
     qFatal("An error occurred during parsing"); 
     exit (1); 
    } 
    qDebug() <<"error String"<< parser.errorString(); 
    qDebug() <<"error" <parser.errorLine(); 
    //! QVariantList entries = result["name"].toList(); 
    foreach (QVariant city, result) { 
     QVariantMap names = city.toMap(); 
     qDebug() << "\t-" << names.value("name"); 
    } 
} 

的輸出是:

Starting /Users/QT Developement/CityBook-build-desktop/CityBook.app/Contents/MacOS/CityBook... 
"" 
QVariant(,) 
0 
error String "" 
error 0 

回答

3

readAll函數的結果是一個空字節數組。根據文件,這可能意味着沒有數據可用或出現錯誤。

+0

但我可以在QMessageBox中看到結果。 – Finder 2010-09-17 08:12:45

+2

儘量只閱讀一次回覆。先在一個臨時變量中獲取它,然後將其顯示在消息框中並使用qdebug – 2010-09-17 08:30:11

+0

是的。非常感謝Patrice。我現在可以看到解析結果。非常感謝。但是什麼是理由?請告訴我。謝謝 – Finder 2010-09-17 08:45:45