Класс QJsonDocument
Класс QJsonDocument предоставляет способ чтения и записи JSON-документов. Подробнее...
| Заголовок: | #include <QJsonDocument> |
| qmake: | QT += core |
| С момента: | Qt 5.0 |
Этот класс был представлен в Qt 5.0.
Примечание: Все функции в этом классе являются реентерабельными.
Открытые типы
| Перечисление | DataValidation { Validate, BypassValidation } |
| Перечисление | JsonFormat { Indented, Compact } |
Открытые функции
| QJsonDocument(QJsonDocument &&other) | |
| QJsonDocument(const QJsonDocument &other) | |
| QJsonDocument(const QJsonArray &array) | |
| QJsonDocument(const QJsonObject &object) | |
| QJsonDocument() | |
| QJsonDocument & | operator=(QJsonDocument &&other) |
| QJsonDocument & | operator=(const QJsonDocument &other) |
| ~QJsonDocument() | |
| QJsonArray | array() const |
| bool | isArray() const |
| bool | isEmpty() const |
| bool | isNull() const |
| bool | isObject() const |
| QJsonObject | object() const |
| const char * | rawData(int *size) const |
| void | setArray(const QJsonArray &array) |
| void | setObject(const QJsonObject &object) |
| void | swap(QJsonDocument &other) |
| QByteArray | toBinaryData() const |
| QByteArray | toJson() const |
| QByteArray | toJson(QJsonDocument::JsonFormat format) const |
| QVariant | toVariant() const |
| bool | operator!=(const QJsonDocument &other) const |
| bool | operator==(const QJsonDocument &other) const |
| const QJsonValue | operator[](const QString &key) const |
| const QJsonValue | operator[](QStringView key) const |
| const QJsonValue | operator[](QLatin1String key) const |
| const QJsonValue | operator[](int i) const |
Статические открытые члены
| QJsonDocument | fromBinaryData(const QByteArray &data, QJsonDocument::DataValidation validation = Validate) |
| QJsonDocument | fromJson(const QByteArray &json, QJsonParseError *error = nullptr) |
| QJsonDocument | fromRawData(const char *data, int size, QJsonDocument::DataValidation validation = Validate) |
| QJsonDocument | fromVariant(const QVariant &variant) |
Подробное описание
QJsonDocument — это класс, который оборачивает весь JSON-документ и может читать и записывать этот документ как из UTF-8 кодированного текстового представления, так и из собственного двоичного формата Qt.
JSON-документ можно преобразовать из его текстового представления в QJsonDocument с помощью QJsonDocument::fromJson(). toJson() преобразует его обратно в текст. Парсер очень быстрый и эффективный и преобразует JSON в двоичное представление, используемое Qt.
Проверка валидности обработанного документа может быть выполнена с помощью !isNull()
END_OF_DOCUMENT_MARKERДокумент можно запросить на предмет наличия массива или объекта, используя isArray() и isObject(). Массив или объект, содержащиеся в документе, можно получить, используя array() или object(), а затем прочитать или изменить.
Документ также можно создать из сохранённого двоичного представления, используя fromBinaryData() или fromRawData().
См. также Поддержка JSON в Qt и Пример сохранения игры в формате JSON.
Документация по типам членов
enum QJsonDocument::DataValidation
Это значение используется для указания QJsonDocument на то, нужно ли проверять двоичные данные при преобразовании в QJsonDocument с помощью fromBinaryData() или fromRawData().
| Константа | Значение | Описание |
|---|---|---|
QJsonDocument::Validate |
0 |
Проверить данные перед использованием. Это значение по умолчанию. |
QJsonDocument::BypassValidation |
1 |
Пропускает проверку данных. Используйте только если данные получены из надёжного источника и известны их корректность, поскольку использование некорректных данных может привести к сбою приложения. |
enum QJsonDocument::JsonFormat
Это значение определяет формат массива байтов JSON, создаваемого при преобразовании в QJsonDocument с помощью toJson().
| Константа | Значение | Описание |
|---|---|---|
QJsonDocument::Indented |
0 |
Определяет удобочитаемый вывод следующим образом: {
"Array": [
true,
999,
"string"
],
"Key": "Value",
"null": null
} |
QJsonDocument::Compact |
1 |
Определяет компактный вывод следующим образом: {"Array":[true,999,"string"],"Key":"Value","null":null} |
Этот перечисление был введён или изменён в Qt 5.1.
Документация по функциям членов
QJsonDocument::QJsonDocument(QJsonDocument &&other)
Создаёт QJsonDocument из other с помощью перемещения.
Эта функция была введена в Qt 5.10.
QJsonDocument::QJsonDocument(const QJsonDocument &other)
Создаёт копию документа other.
QJsonDocument::QJsonDocument(const QJsonArray &array)
Конструирует QJsonDocument из array.
QJsonDocument::QJsonDocument(const QJsonObject &object)
Создаёт QJsonDocument из object.
QJsonDocument::QJsonDocument()
Конструирует пустой и недействительный документ.
QJsonDocument &QJsonDocument::operator=(QJsonDocument &&other)
Перемещающее присваивание other данному документу.
Эта функция была добавлена в Qt 5.10.
QJsonDocument &QJsonDocument::operator=(const QJsonDocument &other)
Присваивает документ other этому QJsonDocument. Возвращает ссылку на этот объект.
QJsonDocument::~QJsonDocument()
Удаляет документ.
Бинарные данные, установленные с помощью fromRawData, не освобождаются.
QJsonArray QJsonDocument::array() const
Возвращает QJsonArray, содержащуюся в документе.
Возвращает пустой массив, если документ содержит объект.
См. также isArray(), object() и setArray().
[static] QJsonDocument QJsonDocument::fromBinaryData(const QByteArray &data, QJsonDocument::DataValidation validation = Validate)
Создаёт QJsonDocument из data.
validation определяет, проверяются ли данные на корректность перед использованием. По умолчанию данные проверяются. Если data некорректны, метод возвращает пустой документ.
См. также toBinaryData(), fromRawData(), isNull() и DataValidation.
[static] QJsonDocument QJsonDocument::fromJson(const QByteArray &json, QJsonParseError *error = nullptr)
Парсит json как UTF-8 кодированный JSON документ и создаёт QJsonDocument из него.
Возвращает допустимый (не пустой) QJsonDocument, если парсинг успешен. Если произошла ошибка, возвращаемый документ будет пустым, и необязательная переменная error будет содержать подробности об ошибке.
См. также toJson(), QJsonParseError и isNull().
[static] QJsonDocument QJsonDocument::fromRawData(const char *data, int size, QJsonDocument::DataValidation validation = Validate)
Создаёт QJsonDocument, использующий первые size байтов из data. Предполагается, что data содержит бинарный кодированный JSON документ. Созданный документ не берёт владения над data, и вызывающая сторона должна гарантировать, что data не будет удалён или изменён, пока любой QJsonDocument, QJsonObject или QJsonArray всё ещё ссылается на данные.
data должен быть выровнен по границе 4 байта.
validation определяет, проверяются ли данные на корректность перед использованием. По умолчанию данные проверяются. Если data некорректны, метод возвращает пустой документ.
Возвращает QJsonDocument, представляющий данные.
См. также rawData(), fromBinaryData(), isNull() и DataValidation.
[static] QJsonDocument QJsonDocument::fromVariant(const QVariant &variant)
Создаёт QJsonDocument из QVariant variant.
Если variant содержит тип, отличный от QVariantMap, QVariantHash, QVariantList или QStringList, возвращаемый документ недействителен.
См. также toVariant().
bool QJsonDocument::isArray() const
Возвращает true если документ содержит массив.
См. также array() и isObject().
bool QJsonDocument::isEmpty() const
Возвращает true если документ не содержит данных.
bool QJsonDocument::isNull() const
Возвращает true если этот документ равен null.
Пустые документы создаются с помощью конструктора по умолчанию.
Документы, созданные из UTF-8 кодированного текста или бинарного формата, проверяются на валидность во время парсинга. Если проверка не пройдена, возвращаемый документ также будет null.
bool QJsonDocument::isObject() const
Возвращает true если документ содержит объект.
См. также object() и isArray().
QJsonObject QJsonDocument::object() const
Возвращает QJsonObject, содержащуюся в документе.
Возвращает пустой объект, если документ содержит массив.
См. также isObject(), array() и setObject().
const char *QJsonDocument::rawData(int *size) const
Возвращает исходное бинарное представление данных. size будет содержать размер возвращаемых данных.
Этот метод полезен, например, для потоковой передачи JSON-документа в его бинарном формате в файл.
void QJsonDocument::setArray(const QJsonArray &array)
Устанавливает array как основной объект этого документа.
См. также setObject() и array().
void QJsonDocument::setObject(const QJsonObject &object)
Устанавливает object как основной объект этого документа.
См. также setArray() и object().
void QJsonDocument::swap(QJsonDocument &other)
Меняет местами документ other с этим. Эта операция очень быстрая и никогда не терпит неудачу.
Эта функция была добавлена в Qt 5.10.
QByteArray QJsonDocument::toBinaryData() const
Возвращает бинарное представление документа.
Бинарное представление также является родным форматом, используемым внутри Qt, и очень эффективно и быстро преобразуется в него и из него.
Бинарный формат можно хранить на диске и обмениваться им с другими приложениями или компьютерами. fromBinaryData() может использоваться для преобразования его обратно в JSON-документ.
См. также fromBinaryData().
QByteArray QJsonDocument::toJson() const
Преобразует QJsonDocument в отформатированный, UTF-8 кодированный JSON документ.
См. также fromJson().
QByteArray QJsonDocument::toJson(QJsonDocument::JsonFormat format) const
Преобразует QJsonDocument в UTF-8 кодированный JSON документ в указанном формате format.
Эта функция была добавлена в Qt 5.1.
См. также fromJson() и JsonFormat.
QVariant QJsonDocument::toVariant() const
Возвращает QVariant, представляющий JSON-документ.
Возвращаемый вариант будет QVariantList, если документ является QJsonArray, и QVariantMap, если документ является QJsonObject.
См. также fromVariant() и QJsonValue::toVariant().
bool QJsonDocument::operator!=(const QJsonDocument &other) const
возвращает true если other не равно этому документу
bool QJsonDocument::operator==(const QJsonDocument &other) const
Возвращает true если документ other равен этому документу.
const QJsonValue QJsonDocument::operator[](const QString &key) const
Возвращает QJsonValue, представляющий значение для ключа key.
Эквивалентно вызову object().value(key).
Возвращаемое значение QJsonValue равно QJsonValue::Undefined, если ключ не существует или если isObject() равно false.
Эта функция была добавлена в Qt 5.10.
См. также QJsonValue, QJsonValue::isUndefined() и QJsonObject.
const QJsonValue QJsonDocument::operator[](QStringView key) const
Это перегруженная функция.
Эта функция была добавлена в Qt 5.14.
const QJsonValue QJsonDocument::operator[](QLatin1String key) const
Это перегруженная функция.
Эта функция была добавлена в Qt 5.10.
const QJsonValue QJsonDocument::operator[](int i) const
Возвращает QJsonValue, представляющий значение для индекса i.
Эквивалентно вызову array().at(i).
Возвращаемое значение QJsonValue равно QJsonValue::Undefined, если i выходит за пределы границ или если isArray() равно false.
Эта функция была добавлена в Qt 5.10.
См. также QJsonValue, QJsonValue::isUndefined() и QJsonArray.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qjsondocument.html