可能与如何在不使用副本的情况下更改 QJson 层次结构中的 QJsonObject 值有关?,但答案基本上是,它不起作用,也许从那以后事情发生了变化。给出以下签名:
void addToJson(const QStringList& path, QJsonObject& target, const QJsonObject& object)
它应该基于path
and add构建一个 JSON 对象object
,例如:
path: obj,obj2,obj3
->
"obj": {
"obj2": {
"obj3": {
}
}
}
object
将被添加到 obj3。
目前的实现是:
void addToJson(const QStringList& path, QJsonObject& target, const QJsonObject& object)
{
if(path.isEmpty())
{
target = object;
return;
}
QString objName = path.first();
QJsonObject tmpObj = target[objName].toObject();
addToJson(path.mid(1), tmpObj, object);
target[objName] = tmpObj;
}
是否可以编写以避免副本(基本上每次迭代都会有很多深层副本)?
[]
操作员给你 a ,QJsonValueRef
什么是好的,但如果你想给它添加一些东西,你需要将它QJsonObject
再次转换为 a 而不是 a QJsonValueRef
,这会破坏一切。