【发布时间】:2011-02-25 12:47:09
【问题描述】:
我想在 symbian 应用程序中解析这个 JSON 输出:
[
{"ID":"9","titel":"wouter","plaatsID":"2616","prio":"3"},
{"ID":"8","titel":"pasta","plaatsID":"3780","prio":"3"},
{"ID":"6","titel":"Muts prikken","plaatsID":"3780","prio":"2"
{"ID":"5","titel":"doorplannen","plaatsID":"3840","prio":"2"}
{"ID":"4","titel":"Gasfles","plaatsID":"3780","prio":"2"}
]
为此,我编写了以下代码,但无法读取数据。其他单个 JSON 输出可以正常工作,但多个输出不起作用:
void start::finishedSlot(QNetworkReply * reply)
{
// Reading attributes of the reply
// e.g. the HTTP status code
reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
// see CS001432 on how to handle this
// no error received?
if (reply->error() == QNetworkReply::NoError)
{
QByteArray data = reply->readAll();
bool ok;
QVariantMap result = Json::parse(QString(data), ok).toMap();
if(!ok) {
qFatal("An error occurred during parsing");
exit(1);
}
QMapIterator<QString, int> i(result);
while (i.hasNext()) {
i.next();
cout << i.key() << ": " << i.value() << endl;
}
ui->log->setText("het gaat goed");
}
// Some http error received
else
{
ui->log->setText("gaat NIET goed");
}
delete reply;
}
【问题讨论】:
-
您问题中的 JSON 是您尝试解析的实际数据吗?如果是这样,它包含几个问题,例如缺少花括号和一些逗号。
-
不确定 QMapIterator 是怎么做的,但是当它解析数组时,最后一个元素是长度。我使用了 qScriptValueToSequence(value,list);