0

QVariantMAP/List と参照で少し迷っています。

QJson で json を読み込み、QVariantMAP に変換します。currentJSON["tests"] は QVariantList です

currentJSON["tests"] を参照し、item["label"] の値を更新したいと考えています。最初のループは値の更新を試み、2 番目のループはそれを表示します。残念ながら、値の表示は更新された値ではありません。これはコピー/参照の問題だと思いますが、修正方法がわかりません。

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();
}

あなたが私を助けることができれば、ありがとう.

4

1 に答える 1

0

OK、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();
 }

追加しました: *hehe = test; currentJSON["テスト"] = l;

しかし、ネストされたリストが多数ある場合、これは少し複雑です。copy の代わりに参照を使用する方法はありますか?

于 2015-07-27T11:50:05.897 に答える