我在Qt中使用JSON已经很长一段时间了,我总是按照在示例中显示的方式来做。但是,我想知道,与向QJsonValueRef添加项目时使用QJsonObject::insert相比,这种直接分配给QJsonObject的直接分配实际上是否有区别,即:
json["name"] = mName;json.insert("name", mName);有什么不同,还是只是一种编码风格的问题?
发布于 2017-06-21 05:52:01
从概念上讲,这是不同的。operator[](const QString &key)返回key指向的JSON value的引用(即不包括key ),而insert方法将添加/替换该值,然后将iterator返回到该值(即我们可以通过迭代器访问key和value )。因此,使用operator[]只能访问(引用) key指向的特定值,在使用insert时,可以使用iterator访问JSON对象中的元素(键、值)本身和前一个/下一个元素(如果有的话)。
从技术上讲,根据源代码的说法,在operator[](const QString &key)中,首先它将搜索key指向的值,如果存在,将返回引用。如果该值不存在,insert将以一个空的QJSonValue()作为第二个参数进行调用,那么将返回对这个新值的引用。因为调用operator[]之后是值修改,所以这两个操作的效果都是相同的,也就是说,它将mValue分配给具有键"name"的元素。
https://stackoverflow.com/questions/44664016
复制相似问题