Qt JsonObjects和初始值设定项列表 - 比一个级别更深?

Qt JsonObjects and initializer lists -- deeper than one level?

本文关键字:一个 JsonObjects 列表 Qt      更新时间:2023-10-16

这是在文档中:

http://doc.qt.io/qt-5/qjsonobject.html#QJsonObject-1

这表明我可以做到:

QJsonObject o
{
{"x", 1},
{"y", 2}
}

。然而,这有效

QJsonObject o
{
{"x", { "value", 1 } },
{"y", { "value", 2 } }
}

不编译。 我错过了什么?

您必须在初始值设定项列表 {} 前面指定类型(QJsonObject 或 QJsonArray(,编译器无法猜测您想要哪一个。

QJsonObject o
{
{"x", QJsonObject { {"key", "value"} }}
};

您也可以尝试此方法,使用 C++11 原始字符串文字:

const QByteArray object = R"(
{
"x": { "value": "1" },
"y": { "value": "2" }
}
)";
QJsonObject jsonObject = QJsonDocument::fromJson(object).object();
qDebug() << jsonObject;