c++ - 如何在qt中解码json

标签 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();
        }

最佳答案

这是罪魁祸首:

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();

关于c++ - 如何在qt中解码json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24332719/

相关文章:

c++ - 对象分配对二进制大小有何影响?

c++ - 仅在相等可用时排序

javascript - 第二个 $.ajax 调用被跳过

python - 将嵌套的 mongoDB 文档转换为平面 pandas DataFrame(对象数组中的对象数组)

c++ - QRegExp 去除换行符和多个空格

尝试读取注册表子项时 C++ 应用程序崩溃

java - 如何读取Json文件中超过1个JsonObject

qt - PySide:QTimer 需要 QApplication 才能工作吗?

c++ - 如何使用 testBit 函数检查二进制数组中的特定索引位

c++ - 编写可插件应用程序的最佳方法是什么?