如何在qt中解码json

时间:2014-06-20 17:34:28

标签: c++ json qt qt5 qtcore

我想用qt解码跟随json:

{
 "user": {
  "name": "string"
 }
}

我尝试使用此代码执行此操作,但无效:

QJsonDocument jsonResponse = QJsonDocument::fromJson(result.toUtf8());
QJsonObject jsonObject = jsonResponse.object();
QJsonArray jsonArray = jsonObject["user"].toArray();
foreach (const QJsonValue & value, jsonArray)
        {
            QJsonObject obj     = value.toObject();
            url          = obj["name"].toString();
        }

1 个答案:

答案 0 :(得分:5)

这是罪魁祸首:

QJsonArray jsonArray = jsonObject["user"].toArray();

您正在尝试将对象转换为数组而不进行任何isArray()检查。也就是说,你的json中不包含数组。数组在json世界中意味着[...]

您应该使用toObject()或更改输入json。

如果没有更改json文件,您可以写下:

QJsonDocument jsonResponse = QJsonDocument::fromJson(result.toUtf8());
QJsonObject jsonObject = jsonResponse.object();
QJsonObject userJsonObject = jsonObject.value("user").toObject();
qDebug() << userJsonObject.value("name").toString();