我在 Qt 中使用 JSON 已经有一段时间了,而且我总是按照 example 中显示的方式使用它。 .但是,我想知道在将项目添加到 QJsonObject 时,直接分配给 QJsonValueRef 与使用 QJsonObject::insert
之间是否真的有区别? ,即这些行:
json["name"] = mName;
json.insert("name", mName);
有任何不同还是只是编码风格的问题?
最佳答案
从概念上讲,它是不同的。 operator[](const QString &key)
返回对 指向的 JSON
,而 value
的引用(即不包括 key
) keyinsert
方法将添加/替换值,然后返回一个 iterator
到该值(即我们可以访问 key
和 value
通过迭代器)。因此,使用 operator[]
你只能获得对 key
指向的特定值的访问(引用),而当使用 insert
时,你得到一个 iterator
可用于访问元素(键,值)本身和 JSON 对象中的上一个/下一个(如果有)元素。
技术上,根据 the source code ,在operator[](const QString &key)
中,首先会搜索key
指向的值,如果存在,引用回来。如果该值不存在,insert
将被调用,一个空的 QJSonValue() 作为第二个参数,然后将返回对该新值的引用。由于您对 operator[]
的调用之后是值修改,因此这两个操作的效果将是相同的,即它将 mValue
分配给具有键 “名称”
。
关于c++ - QJsonObject::insert 与直接赋值给 QJsonValueRef 相比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44664016/