В моём QT aplication есть необходимость хранить значение структур одного типа в JSON словаре.
Значения должна быть возможность добавлять, читать, изменять, удалять. Про статью
JSON Save Game Example знаю, пытался долго разобраться, ни к чему не пришёл, форумы тоже все облазил с таким же результатом.
Основная проблема заключается в следующем:
Допустим есть у меня следующая структура:
struct Laptopstruct Laptop{
std::string name;
int price;
int year;
};
И я хочу хранить массив таких структур в JSON словаре. Использую следующий код:
spoiler//filling structure
Laptop Ltemp = {"some name" , 1000, 2022};
//adding structure to JSON object
QJsonObject g;
g.insert("name", Ltemp.name.c_str());
g.insert("price", Ltemp.price);
g.insert("year", Gtemp.year);
//open and wtritingmy JSON
QFile file("path/to/myfile.json");
QByteArray jsonData = file.readAll();
QJsonDocument document = QJsonDocument::fromJson(jsonData);
QJsonObject object = document.object();
QJsonValue value = object.value("mydata");
QJsonArray myArray= value.toArray();
myArray.removeAt(0);
myArray.append(g);
object.insert("mydata", myArray);
document.setObject(object);
//write to file
file.write(document.toJson());
file.close();
Ожидая при этом, что при повторном применении кода данные структуры добавятся в тот же массив, ключом которого является "mydata", но в итоге имею вот такое:
spoiler{
"mydata": [
{
"name": "some name",
"price": 1000,
"year": 2022
}
]
}
{
"mydata": [
{
"name": "some name",
"price": 1000,
"year": 2022
}
]
}
вместо
"mydata": [
{
"name": "some name",
"price": 1000,
"year": 2022
},
{
"name": "some name",
"price": 1000,
"year": 2022
}
]
}