Qt JsonObjects和初始化列表 - 超过一个级别?

时间:2018-06-01 16:10:18

标签: c++ qt

这是在文档中:

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

这表明我可以做到:

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

......然而,这是有效的

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

不编译。我错过了什么?

2 个答案:

答案 0 :(得分:2)

你必须在初始化列表{}前面指定类型(QJsonObject或QJsonArray),编译器无法猜出你想要的那个。

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

答案 1 :(得分:0)

您还可以使用C ++ 11 raw string literal尝试这种方法:

const QByteArray object = R"(
    {
        "x": { "value": "1" },
        "y": { "value": "2" }
    }
)";

QJsonObject jsonObject = QJsonDocument::fromJson(object).object();
qDebug() << jsonObject;