我想知道,如何在QT中解析关联的JSON数组。
这是我的例子JSON:
{
"req_code": 5,
"params": {
"email":"user@domain.com",
"password":"123"
}
}
因此,为了获取电子邮件(来自名为'数据'的JSON字符串),我必须做这样的事情:
QJsonDocument doc=QJsonDocument::fromJson(data.toUtf8());
QJsonObject jobj=doc.object();
QJsonValue params_value=jobj.value(QString("params"));
QJsonArray params_array=params_value.toArray();
现在,'电子邮件'正在举行的#params_array'对象,但这个数组不是QHash而不是QMap。如果它是QHash我会收到电子邮件:
QString email=params_array.value("email");
但它不是哈希,它是一个向量。那么如何获得' email'在这种情况下,财产以适当和快速的方式?
答案 0 :(得分:1)
params
的值是一个对象,QJsonObject
提供了map-like functions,因此您可以轻松访问它:
auto doc = QJsonDocument::fromJson(data.toUtf8());
auto docObj = doc.object();
auto paramsObj = docObj["params"].toObject();
auto email = paramsObj["email"];
所有JSON类都是基于值的隐式共享类。
所以你真的不需要太在意表现。如果您想将QJsonObject
汇总为哈希值或地图,可以使用QJsonObject::toVariantHash
或QJsonObject::toVariantMap
。
答案 1 :(得分:0)
试试这个;
QJsonArray params_array = jobj.value("params").toArray();
qDebug() << "params_array:: results array size = " << params_array.count();
foreach (const QJsonValue & value, a)
{
QJsonObject obj = value.toObject();
qDebug() << "obj keys " << obj.keys() ;
// here you can access your data, verify your keys with the debug a
}