【发布时间】:2017-11-16 05:43:28
【问题描述】:
我已经尝试过这段代码并且工作正常,但我不明白如何使用 Qt 获取 json 并转换为数组或列表。 我的代码:
QEventLoop eventLoop;
QNetworkAccessManager mgr;
QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
QNetworkRequest req(QUrl(QString("http://myurljson.com/getjson")));
QNetworkReply *reply = mgr.get(req);
eventLoop.exec(); // blocks stack until "finished()" has been called
if (reply->error() == QNetworkReply::NoError) {
QString strReply = (QString)reply->readAll();
qDebug() << "Response:" << strReply;
QJsonDocument jsonResponse = QJsonDocument::fromJson(strReply.toUtf8());
QJsonObject jsonObj = jsonResponse.object();
qDebug() << "test:" << jsonObj["MCC_Dealer"].toString();
qDebug() << "test1:" << jsonObj["MCC_User"].toString();
delete reply;
}
else {
//failure
qDebug() << "Failure" <<reply->errorString();
delete reply;
}
我的 json 获取(来自 url 的 3 条记录):
[{"MCC_Dealer":'test',"MCC_User":'test',"CurrentDealer":'test',"CurrentUser":'test'},{"MCC_Dealer":'test',"MCC_User" :'test',"CurrentDealer":'test',"CurrentUser":'test'},{"MCC_Dealer":'test',"MCC_User":'test',"CurrentDealer":'test',"CurrentUser" :'测试'}]
我需要获取 json 并在列表或数组中设置。 我的目标是使用 c++ 和 Qt 将 json 响应转换为数组或列表。 有什么想法吗?
谢谢
【问题讨论】:
-
您的 JSON 响应是一个数组。数组的每个元素都有四个带有字符串值的 JSON 对象:“MCC_Dealer”、“MCC_User”、“CurrentDealer”、“CurrentUser”。请澄清一下,您希望如何将它们存储在列表中。
-
每一行都是一个对象,我想把它放在一个对象列表中,比如List
obj = new List ();和 obj.add(line1);等等等等..我来自c#,但我想在c ++中做到这一点 -
好吧,但是您已经有一个
QJsonArray来存储每个提到的对象。为什么需要另一个结构(列表)来存储它们?如果你写QJsonArray jsonArray = jsonResponse.array();,你会得到你需要的,我想。 -
工作!从第一个元素调用属性,我执行 jsonArray[0]['MCC_Dealer'] ?