0
QJsonArrayからすべての要素を削除したいと考えていました。ここに私のコードは次のとおりです。私はこの出力を取得していQJsonArrayのすべての要素を削除します。
void Assessment::clearQJsonArray(QJsonArray *array) {
printQJsonArray(*array);
for(int i=0;i<array->count();i++) {
array->removeAt(i);
}
qDebug() << "Test clear:" << array->count();
printQJsonArray(*array);
}
void Assessment::printQJsonArray(QJsonArray array) {
QJsonDocument doc;
doc.setArray(array);
qDebug() << doc.toJson();
}
void Assessment::testClearQJsonArray() {
QJsonArray array;
QJsonObject obj1, obj2, obj3, obj4;
obj1.insert("number",1);
obj2.insert("number",2);
obj3.insert("number",3);
obj4.insert("number",4);
array.append(obj1);
array.append(obj2);
array.append(obj3);
array.append(obj4);
qDebug() << "Before clear";
qDebug() << "Test size:" << array.count();
QJsonObject element;
for(int i=0;i<array.count();i++) {
element = array.at(i).toObject();
qDebug() << element.value("number").toInt();
}
clearQJsonArray(&array);
qDebug() << "After clear";
for(int i=0;i<array.count();i++) {
element = array.at(i).toObject();
qDebug() << element.value("number").toInt();
}
qDebug() << "Test size:" << array.count();
}
そして:
(void Assessment::testClearQJsonArray()): Before clear
(void Assessment::testClearQJsonArray()): Test size: 4
(void Assessment::testClearQJsonArray()): 1
(void Assessment::testClearQJsonArray()): 2
(void Assessment::testClearQJsonArray()): 3
(void Assessment::testClearQJsonArray()): 4
(void Assessment::printQJsonArray(QJsonArray)): "[\n {\n \"number\": 1\n },\n {\n \"number\": 2\n },\n {\n \"number\": 3\n },\n {\n \"number\": 4\n }\n]\n"
(void Assessment::clearQJsonArray(QJsonArray*)): Test clear: 2
(void Assessment::printQJsonArray(QJsonArray)): "[\n {\n \"number\": 2\n },\n {\n \"number\": 4\n }\n]\n"
(void Assessment::testClearQJsonArray()): After clear
(void Assessment::testClearQJsonArray()): 2
(void Assessment::testClearQJsonArray()): 4
(void Assessment::testClearQJsonArray()): Test size: 2
私は本当にない2と4任意のアイデアをオブジェクト1と3が削除されている理由を理解、しかしないのですか?
ありがとうございました。
方法;'? – nwp
ありがとうございます! – highvoltage379
@nwpはい、間違いなく動作するはずです。ポイントは、実際に質問は 'QJsonArray'ではなく、このようなコンテナに関連しているということです。プログラマは、このような間違いを避けるために、上記のようなコードは間違っていると理解していなければなりません。 'QJsonArray'は' clear() 'のようなものを持たないので、あなたのバリアントはこのケースの最短です。 –