0
Qt 5.4로 업그레이드 한 이후 json 파싱에 문제가 있습니다. 나는이 Qt는 5.3을 사용하는 모든 괜찮 실행하면OSX에서 Qt 5.4부터 QJsonDocument 구문 분석이 중단 되었습니까?
#include <QCoreApplication>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
char jsString[] {
"{\"results\":[{\"id\":1,\"title\":\"Test1\"},{\"id\":2,\"title\":\""
"Test2\"},{\"id\":3,\"title\":\"Test3\"},{\"id\":4,\"title\":\"Test4\"}]}"
};
QJsonParseError *error { nullptr };
// parse bytes to json
QJsonDocument doc { QJsonDocument::fromJson(jsString, error) };
if (error) {
qDebug() << "error parsing json:" << error->errorString();
} else {
QJsonObject rootObj { doc.object() };
QJsonArray results { rootObj.value("results").toArray() };
qDebug() << "results.count:" << results.count();
for (QJsonValue v : results) {
qDebug() << "v:" << v.toObject().value("title").toString();
}
}
return a.exec();
}
: 여기
은 예입니다. 출력은 다음과 같습니다results.count: 1
v: ""
나는 그 소리 컴파일러와 맥 OS X 요세미티 64 비트에서이 작업을 실행
results.count: 4
v: "Test1"
v: "Test2"
v: "Test3"
v: "Test4"
나는이 사용 Qt는 5.4을 실행하면 나는이 얻을.
누구에게 아이디어가 잘못 되었나요?
건배, Manromen
C++ 11에서는 문제가되지 않습니다. 그것은 [문서화 된 동작] (http://doc.qt.io/qt-5/qjsonarray.html#QJsonArray-2)입니다. initializer-list를 사용하면 첫 번째 배열을 단일 QJsonValue로 변환합니다. 따라서 * results *는 배열 배열이됩니다. Qt 5.3에서 본 동작은 버그가 있습니다. – JKSH