更新 qvariantlist 中的项目
Update item in qvariantlist
我有点迷失 QVariantMAP/List 和参考。
我用 QJson 加载了一个 json 并将其转换为 QVariantMAP。 currentJSON["tests"] 是一个 QVariantList
我想浏览当前 JSON["tests"] 并更新项目["label"] 的值。
第一个循环尝试更新值,第二个循环显示它。不幸的是,值显示不是更新值。
我想这是一个 copy/reference 问题,但我找不到解决方法。
QVariantMap currentJSON = jObject.toVariantMap(); //jobject is the json
QVariantList l = qvariant_cast<QVariantList>(currentJSON["tests"]);
for (QVariantList::iterator hehe = l.begin(); hehe != l.end(); hehe++) {
QVariantMap test = hehe->toMap();
test["label"].setValue(QVariant("AAAAAAAAAAAAAAAAAAA"));
}
l = qvariant_cast<QVariantList>(currentJSON["tests"]);
for (QVariantList::iterator hehe = l.begin(); hehe != l.end(); hehe++) {
QVariantMap test = hehe->toMap();
//the value print is not AAAAAAAAAAAAAAAAAAA
qDebug() << test["label"].toString();
}
如果能帮到我,谢谢。
好的,在 Amartel 的帮助下,我找到了这个解决方案:
QVariantList l = qvariant_cast<QVariantList>(currentJSON["tests"]);
for (QVariantList::iterator hehe = l.begin(); hehe != l.end(); hehe++) {
//qDebug() << hehe->toMap();
QVariantMap test = hehe->toMap();
test["label"].setValue(QVariant("AAAAAAAAAAAAAAAAAAA"));
*hehe = test;
}
currentJSON["tests"] = l;
l = qvariant_cast<QVariantList>(currentJSON["tests"]);
for (QVariantList::iterator hehe = l.begin(); hehe != l.end(); hehe++) {
QVariantMap test = hehe->toMap();
qDebug() <<"y " << test["label"].toString();
}
我添加了:
*呵呵=测试;
currentJSON["tests"] = l;
但是如果我有很多嵌套的列表,这就有点复杂了。有没有一种方法可以使用参考而不是复制?
我有点迷失 QVariantMAP/List 和参考。
我用 QJson 加载了一个 json 并将其转换为 QVariantMAP。 currentJSON["tests"] 是一个 QVariantList
我想浏览当前 JSON["tests"] 并更新项目["label"] 的值。 第一个循环尝试更新值,第二个循环显示它。不幸的是,值显示不是更新值。 我想这是一个 copy/reference 问题,但我找不到解决方法。
QVariantMap currentJSON = jObject.toVariantMap(); //jobject is the json
QVariantList l = qvariant_cast<QVariantList>(currentJSON["tests"]);
for (QVariantList::iterator hehe = l.begin(); hehe != l.end(); hehe++) {
QVariantMap test = hehe->toMap();
test["label"].setValue(QVariant("AAAAAAAAAAAAAAAAAAA"));
}
l = qvariant_cast<QVariantList>(currentJSON["tests"]);
for (QVariantList::iterator hehe = l.begin(); hehe != l.end(); hehe++) {
QVariantMap test = hehe->toMap();
//the value print is not AAAAAAAAAAAAAAAAAAA
qDebug() << test["label"].toString();
}
如果能帮到我,谢谢。
好的,在 Amartel 的帮助下,我找到了这个解决方案:
QVariantList l = qvariant_cast<QVariantList>(currentJSON["tests"]);
for (QVariantList::iterator hehe = l.begin(); hehe != l.end(); hehe++) {
//qDebug() << hehe->toMap();
QVariantMap test = hehe->toMap();
test["label"].setValue(QVariant("AAAAAAAAAAAAAAAAAAA"));
*hehe = test;
}
currentJSON["tests"] = l;
l = qvariant_cast<QVariantList>(currentJSON["tests"]);
for (QVariantList::iterator hehe = l.begin(); hehe != l.end(); hehe++) {
QVariantMap test = hehe->toMap();
qDebug() <<"y " << test["label"].toString();
}
我添加了: *呵呵=测试; currentJSON["tests"] = l;
但是如果我有很多嵌套的列表,这就有点复杂了。有没有一种方法可以使用参考而不是复制?