2010-09-14 70 views
0

我的json輸出看起來像[{「id」:2,「name」:「AAA」},{「id」:1,「name」:「BBB」}]]。我想在Mac中使用Qjson解析這個。我正在嘗試解析,但我無法獲得任何輸出。請幫幫我。使用QJSON解析JSON

在此先感謝。

+0

你有一些錯誤?關於你的Json鏈,它是一個包含2個對象的數組。格式似乎沒問題。請提供您的代碼,以便我們瞭解您在做什麼 – 2010-09-14 12:27:04

+0

我正在使用以下代碼, QJson :: Parser解析器; bool ok; QVariantMap result = parser.parse(cityReply-> readAll(),&ok).toMap();如果(!ok){0142} exit(1); ()<<「Name:」<< result.value(「name」)。toString(); } 輸出是:名稱:「」 注意:如果我在messagebox中顯示cityReply-> readAll(),則可以查看webservice結果(json字符串)。 – Finder 2010-09-14 14:26:54

+0

我正在使用下面的代碼,QJson :: Parser解析器;布爾確定; QVariantMap result = parser.parse(cityReply-> readAll(),&ok).toMap();如果(!ok){qFatal(「解析期間發生錯誤」);退出(1); } qDebug()<<「Name:」<< result.value(「name」)。toString(); }輸出是:Name:「」注意:如果我在messagebox中顯示cityReply-> readAll(),那麼我可以查看web服務結果(json字符串)。 – Finder 2010-09-15 03:52:13

回答

2

我認爲這個問題很簡單,JSON表示意味着一個記錄數組。 您正試圖訪問記錄而不使用迭代器或循環。

使用片段下方的的QVariant對記錄轉變成一個列表

QVariantList result = parser.parse(cityReply->readAll(), &ok).toList(); 

然後循環,例如:

foreach(QVariant record, result) { 
    QVariantMap map = record.toMap(); 
    qDebug() << map.value("name"); 
} 
+0

我得到空的列表。 :() – Finder 2010-09-16 13:20:27

+1

試試這個:QVariant result = parser.parse(cityReply-> readAll(),&ok); qDebug()<< result;你在控制檯有任何輸出嗎? – 2010-09-16 13:29:00

+0

我得到以下輸出QVariant(,)。 – Finder 2010-09-17 03:37:57