既存の JSON ファイルを読み取り、それに変更を加えて (オブジェクト、配列、キーと値のペアの置換、削除、追加など)、ファイルを再度書き出せる必要があります。
次の内容の JSON ファイルを読み書きしようとしています。
{
"array": [
{
"name": "Channel",
"default": 1
},
{
"name": "Size",
"default": 457
}
]
}
ファイルを正常に読み込んでいますが、次のコードを使用してファイルを変更できません。
QFile File("/path/to/myfile.json");
File.open(QIODevice::ReadOnly | QIODevice::Text);
QJsonParseError JsonParseError;
QJsonDocument JsonDocument = QJsonDocument::fromJson(File.readAll(), &JsonParseError);
File.close();
QJsonObject RootObject = JsonDocument.object();
QJsonArray Array = RootObject.value("array").toArray();
QJsonObject ElementOneObject = Array.at(0).toObject();
ElementOneObject.insert("key", QJsonValue(QString("value")));
ElementOneObject.insert("name", QJsonValue(QString("David")));
File.open(QFile::WriteOnly | QFile::Text | QFile::Truncate);
File.write(JsonDocument.toJson());
File.close();
配列の最初の要素が「David」という新しい名前と、のような新しいキーと値のペアを持つことを期待しています"key" : "value"
。このコードの実行後、ファイルの内容は同じです。キーと値のペアの順序が、アルファベット順にソートされたキーによって順序付けられるように変更されているため、ファイルが書き出されたことがわかります。
加えようとした変更をファイルに反映させるにはどうすればよいですか?