Я немного потерялся с QVariantMAP/List и reference.Обновить элемент в qvariantlist
Загрузите json с помощью QJson и преобразуйте его в QVariantMAP. currentJSON ["tests"] является QVariantList
Я хочу просмотреть currentJSON ["tests"] и обновить значение элемента ["label"]. Первый цикл попытается обновить значение, второе отобразит его. К сожалению, отображение значения не является обновленным значением. Я полагаю, что это проблема с копией/ссылкой, но я не могу ее исправить.
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();
}
Если вы можете мне помочь, спасибо.
'QVariantMap test = hehe-> toMap();' копирует значение. Попробуйте добавить '* hehe = test;' после "label" chane. – Amartel
Спасибо и хорошая идея, но это не исправляет проблему:/ –
Если я удалю второй «l = qvariant_cast (currentJSON [" tests "]); это сработало. Следовательно, qvariant_cast сделал копию, есть ли способ избежать этого? –