Запись в Json в Qt

Автор: | 22 июля, 2019

Запись в Json файл по средствам Qt

Пример записи нескольких примеров Json файла с примерами фрагмента кода и иллюстрации выходных файлов Json

Для записи будем использовать уже знакомые ранее типы данных и классы. Рассмотрим небольшой фрагмент:

QJsonObject recordObject;
recordObject.insert("Test1", QJsonValue::fromVariant("1"));
recordObject.insert("Test2", QJsonValue::fromVariant(123.4));
recordObject.insert("Test3", QJsonValue::fromVariant(43));
recordObject.insert("Test4", QJsonValue::fromVariant(true));
recordObject.insert("Test5",   QJsonValue::fromVariant(QByteArray("1,2,3,4,5")));

      QJsonArray numbersArray;
      numbersArray.push_back("1");
      numbersArray.push_back("2");
      numbersArray.push_back("3");
      recordObject.insert("Test6",numbersArray);


      QJsonDocument doc(recordObject);
      QString jsonString = doc.toJson(QJsonDocument::Indented);


      //Записываем данные в файл
      QFile file;
      file.setFileName("test1.json");
      file.open(QIODevice::WriteOnly | QIODevice::Text);
      QTextStream stream( &file );
      stream << jsonString;
            file.close();

На выходе получится файл test1.json со следующим содержимым:

test1.json

{
    "Test1": "1",
    "Test2": 123.4,
    "Test3": 43,
    "Test4": true,
    "Test5": "1,2,3,4,5",
    "Test6": [
        "1",
        "2",
        "3"
    ]
}

Создадим более сложный файл:

    QJsonObject recordObject;

    QJsonObject objObject;
    objObject.insert("Test1", "1");
    objObject.insert("Test2", "2");
    objObject.insert("Test3", "3");

    QJsonObject obj2Object;
    obj2Object.insert("Test4", "4");
    obj2Object.insert("Test5", "5");
    obj2Object.insert("Test6", "6");
    obj2Object.insert("Test7", QJsonValue::fromVariant("1"));
    obj2Object.insert("Test8", QJsonValue::fromVariant(123.4));
    obj2Object.insert("Test9", QJsonValue::fromVariant(43));
    obj2Object.insert("Test10", QJsonValue::fromVariant(true));


    objObject.insert("Test11", obj2Object);
    recordObject.insert("Test12",objObject);



    QJsonDocument doc(recordObject);
    QString jsonString = doc.toJson(QJsonDocument::Indented);


    QFile file;
    file.setFileName("test2.json");
    file.open(QIODevice::WriteOnly | QIODevice::Text);
    QTextStream stream( &file );
    stream << jsonString;
        file.close();

Содержимое файла test2.json:

test2.json

{
    "Test12": {
        "Test1": "1",
        "Test11": {
            "Test10": true,
            "Test4": "4",
            "Test5": "5",
            "Test6": "6",
            "Test7": "1",
            "Test8": 123.4,
            "Test9": 43
        },
        "Test2": "2",
        "Test3": "3"
    }
}