QJsonObject 链接赋值产生意外结果

QJsonObject chained assignment produces unexpected results

提问人:rafalk42 提问时间:10/13/2022 更新时间:10/13/2022 访问量:61

问:

当我在 QJsonObject 中为两个不同的不存在的键分配相同的值时,我得到一个意外的结果:

json["first"] = json["second"] = "world!";

据我所知,此代码应添加两个新键 和 ,值均为 。 取而代之的是,它有一个以前存在于该元素中的另一个元素的值,而实际上具有正确的值。 当我将这两个任务分开时:firstsecondworld!firstQJsonObjectsecondworld!

json["first"]  = "world!";
json["second"] = "world!";

它工作正常,但这有什么不同呢?

实际(链式)输出:QJsonObject({"first":"Hello","foo":"Hello","second":"world!"})

预期(单独)输出:QJsonObject({"first":"world!","foo":"Hello","second":"world!"})

完整源代码:

#include <QJsonDocument>
#include <QDebug>

int main(int argc, char *argv[])
{
    QJsonObject json {
        {"foo", "Hello"}
    };

    json["first"] = json["second"] = "world!";

    qDebug() << json;

    return 0;
}

在 Qt 5.15.2 MinGW 8.1.0 x64 和 Qt 6.3.2 MinGW 11.2.0 x64 上进行了测试,在 Windows 上的调试和发布版本中都进行了测试。

C++ QT 赋值运算符 qjson 对象

评论


答: 暂无答案