Spec-Zone.ru › Qt

Класс QJsonValue

Класс QJsonValue инкапсулирует значение в формате JSON. Подробнее...

Заголовок: #include <QJsonValue>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
С тех пор: Qt 5.0
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются реентерабельными.

Типы публичного доступа

перечисление Type { Null, Bool, Double, String, Array, …, Undefined }

Функции публичного доступа

QJsonValue(QJsonValue &&other)
QJsonValue(const QJsonValue &other)
QJsonValue(const QJsonObject &o)
QJsonValue(const QJsonArray &a)
QJsonValue(const char *s)
QJsonValue(QLatin1String s)
QJsonValue(const QString &s)
QJsonValue(qint64 v)
QJsonValue(int v)
QJsonValue(double v)
QJsonValue(bool b)
QJsonValue(QJsonValue::Type type = Null)
QJsonValue & operator=(QJsonValue &&other)
QJsonValue & operator=(const QJsonValue &other)
~QJsonValue()
bool isArray() const
bool isBool() const
bool isDouble() const
bool isNull() const
bool isObject() const
bool isString() const
bool isUndefined() const
void swap(QJsonValue &other)

Статические члены публичного доступа

QJsonValue fromVariant(const QVariant &variant)

Подробное описание

Значение в формате JSON может быть одного из 6 основных типов:

JSON — это формат для хранения структурированных данных. Он имеет 6 основных типов данных:

  • bool QJsonValue::Bool
  • double QJsonValue::Double
  • строка QJsonValue::String
  • массив QJsonValue::Array
  • объект QJsonValue::Object
  • null QJsonValue::Null

Значение может представлять любой из вышеперечисленных типов данных. Кроме того, QJsonValue имеет один специальный флаг для представления неопределенных значений. Его можно запросить с помощью isUndefined().

Тип значения можно запросить с помощью type() или аксессоров, таких как isBool(), isString() и так далее. Аналогично, значение можно преобразовать в тип, хранящийся в нем, используя toBool(), toString() и так далее.

Значения строго типизированы внутри и, в отличие от QVariant, не будут пытаться выполнить неявные преобразования типов. Это означает, что преобразование в тип, который не хранится в значении, вернет значение по умолчанию.

QJsonValueRef

QJsonValueRef — вспомогательный класс для QJsonArray и QJsonObject. При получении объекта типа QJsonValueRef, его можно использовать как ссылку на QJsonValue. При присваивании ему присваивание будет применено к элементу в QJsonArray или QJsonObject, из которого вы получили ссылку.

Следующие методы возвращают QJsonValueRef:

  • QJsonArray::operator[](qsizetype i)
  • QJsonObject::operator[](const QString & key) const

См. также Поддержка JSON в Qt и Пример сохранения игры в формате JSON.

Документация по типу члена

перечисление QJsonValue::Type

Этот перечисление описывает тип значения JSON.

Постоянная Значение Описание
QJsonValue::Null 0x0 Значение Null
QJsonValue::Bool 0x1 Булево значение. Используйте toBool() для преобразования в bool.
QJsonValue::Double 0x2 Значение числового типа. Используйте toDouble() для преобразования в double или toInteger() для преобразования в qint64.
QJsonValue::String 0x3 Строковое значение. Используйте toString() для преобразования в QString.
QJsonValue::Array 0x4 Массив. Используйте toArray() для преобразования в QJsonArray.
QJsonValue::Object 0x5 Объект. Используйте toObject() для преобразования в QJsonObject.
QJsonValue::Undefined 0x80 Значение не определено. Обычно возвращается как ошибка, при попытке обратиться к несуществующему элементу массива или ключу в объекте.

Документация по членам-функциям

[since 5.10] QJsonValue::QJsonValue(QJsonValue &&other)

Перемещающее создание QJsonValue из other.

Эта функция была добавлена в Qt 5.10.

QJsonValue::QJsonValue(const QJsonValue &other)

Создает копию other.

QJsonValue::QJsonValue(const QJsonObject &o)

Создает значение типа Объект со значением o.

QJsonValue::QJsonValue(const QJsonArray &a)

Создает значение типа Массив со значением a.

[since 5.3] QJsonValue::QJsonValue(const char *s)

Создает значение типа Строка со значением s, предполагая кодировку UTF-8 входных данных.

Вы можете отключить этот конструктор, определив QT_NO_CAST_FROM_ASCII при компиляции ваших приложений.

Эта функция была добавлена в Qt 5.3.

QJsonValue::QJsonValue(QLatin1String s)

Создает значение типа Строка со значением s.

QJsonValue::QJsonValue(const QString &s)

Создает значение типа Строка со значением s.

QJsonValue::QJsonValue(qint64 v)

Это перегруженная функция.

Создает значение типа Двойное с значением v. ПРИМЕЧАНИЕ: пределы целых чисел для данных с двойной точностью IEEE 754 составляют 2^53 (-9007199254740992 до +9007199254740992). Если вы передадите значения за пределами этого диапазона, ожидается потеря точности.

QJsonValue::QJsonValue(int v)

Это перегруженная функция.

Создает значение типа Двойное со значением v.

QJsonValue::QJsonValue(double v)

Создает значение типа Двойное со значением v.

QJsonValue::QJsonValue(bool b)

Создает значение типа Булево со значением b.

QJsonValue::QJsonValue(QJsonValue::Type type = Null)

Создает QJsonValue типа type.

По умолчанию создается значение Null.

[since 5.10] QJsonValue &QJsonValue::operator=(QJsonValue &&other)

Перемещающее присваивание other этому значению.

Эта функция была добавлена в Qt 5.10.

QJsonValue &QJsonValue::operator=(const QJsonValue &other)

Присваивает значение, хранящееся в other, этому объекту.

QJsonValue::~QJsonValue()

Уничтожает значение.

[static] QJsonValue QJsonValue::fromVariant(const QVariant &variant)

Преобразует variant в QJsonValue и возвращает его.

Преобразование будет конвертировать типы QVariant следующим образом:

Исходный тип Целевой тип
  • QMetaType::Nullptr
QJsonValue::Null
  • QMetaType::Bool
QJsonValue::Bool
  • QMetaType::Int
  • QMetaType::UInt
  • QMetaType::LongLong
  • QMetaType::ULongLong
  • QMetaType::Float
  • QMetaType::Double
QJsonValue::Double
  • QMetaType::QString
QJsonValue::String
  • QMetaType::QStringList
  • QMetaType::QVariantList
QJsonValue::Array
  • QMetaType::QVariantMap
  • QMetaType::QVariantHash
QJsonValue::Object
  • QMetaType::QUrl
QJsonValue::String. Преобразование будет использовать QUrl::toString() со флагом QUrl::FullyEncoded, чтобы обеспечить максимальную совместимость при разборе URL
  • QMetaType::QUuid
QJsonValue::String. Начиная с Qt 5.11, результирующая строка не будет содержать фигурных скобок
  • QMetaType::QCborValue
Любой тип, который возвращает QCborValue::toJsonValue().
  • QMetaType::QCborArray
QJsonValue::Array. См. QCborValue::toJsonValue() для ограничений преобразования.
  • QMetaType::QCborMap
QJsonValue::Map. См. QCborValue::toJsonValue() для ограничений преобразования и «строкового» представления ключей карты.
Потеря информации и другие типы

QVariant может содержать больше информации, чем может быть представлено в JSON. Если QVariant не является одним из перечисленных типов, преобразование не гарантируется и может быть изменено в будущих версиях Qt, как это было с UUID. Код должен стремиться не использовать другие типы, кроме указанных выше.

Если QVariant::isNull() возвращает true, возвращается или вставляется пустое QJsonValue в список или объект, независимо от типа, переносимого QVariant. Обратите внимание на изменение поведения в Qt 6.0, влияющее на QVariant::isNull(), которое также влияет на эту функцию.

Значение с плавающей точкой, являющееся бесконечностью или NaN, будет преобразовано в пустое значение JSON. Начиная с Qt 6.0, QJsonValue может хранить полную точность любого 64-битного знакового целого числа без потери, но в предыдущих версиях значения за пределами диапазона ±2^53 могут потерять точность. Беззнаковые 64-битные значения, большие или равные 2^63, либо потеряют точность, либо станут отрицательными, поэтому QMetaType::ULongLong следует избегать.

Для других типов, не указанных выше, будет выполнена попытка преобразования в строку, обычно, но не всегда, вызывая QVariant::toString(). Если преобразование завершится неудачей, значение заменяется пустым значением JSON. Обратите внимание, что QVariant::toString() также является убыточным для большинства типов. Например, если переданный QVariant представляет собой данные массива байтов, рекомендуется предварительно закодировать их в Base64 (или другую без потерь кодировку), иначе будет использовано убыточное преобразование с помощью QString::fromUtf8().

Обратите внимание, что преобразования с помощью QVariant::toString() могут быть изменены в любое время. Как QVariant, так и QJsonValue могут быть расширены в будущем для поддержки дополнительных типов, что повлияет на то, как эта функция выполняет преобразования.

См. также toVariant() и QCborValue::fromVariant().

END_OF_DOCUMENT_MARKER

bool QJsonValue::isArray() const

Возвращает true если значение содержит массив.

См. также toArray().

bool QJsonValue::isBool() const

Возвращает true если значение содержит булево значение.

См. также toBool().

bool QJsonValue::isDouble() const

Возвращает true если значение содержит double.

См. также toDouble().

bool QJsonValue::isNull() const

Возвращает true если значение равно null.

bool QJsonValue::isObject() const

Возвращает true если значение содержит объект.

См. также toObject().

bool QJsonValue::isString() const

Возвращает true если значение содержит строку.

См. также toString().

bool QJsonValue::isUndefined() const

Возвращает true если значение не определено. Это может произойти в определенных случаях ошибок, например, при попытке доступа к несуществующему ключу в QJsonObject.

[since 5.10] void QJsonValue::swap(QJsonValue &other)

Меняет местами значения other и этого. Эта операция очень быстрая и никогда не терпит неудачу.

Данная функция была добавлена в Qt 5.10.

QJsonArray QJsonValue::toArray(const QJsonArray &defaultValue) const

Преобразует значение в массив и возвращает его.

Если type() не является Array, возвращается defaultValue.

QJsonArray QJsonValue::toArray() const

Это перегруженная функция.

Преобразует значение в массив и возвращает его.

Если type() не является Array, возвращается QJsonArray().

bool QJsonValue::toBool(bool defaultValue = false) const

Преобразует значение в bool и возвращает его.

Если type() не является bool, возвращается defaultValue.

double QJsonValue::toDouble(double defaultValue = 0) const

Преобразует значение в double и возвращает его.

Если type() не является Double, возвращается defaultValue.

[since 5.2] int QJsonValue::toInt(int defaultValue = 0) const

Преобразует значение в int и возвращает его.

Если type() не является Double или значение не является целым числом, возвращается defaultValue.

Данная функция была добавлена в Qt 5.2.

[since 6.0] qint64 QJsonValue::toInteger(qint64 defaultValue = 0) const

Преобразует значение в целое число и возвращает его.

Если type() не является Double или значение не является целым числом, представимым как qint64, возвращается defaultValue.

Данная функция была добавлена в Qt 6.0.

QJsonObject QJsonValue::toObject(const QJsonObject &defaultValue) const

Преобразует значение в объект и возвращает его.

Если type() не является Object, возвращается defaultValue.

QJsonObject QJsonValue::toObject() const

Это перегруженная функция.

Преобразует значение в объект и возвращает его.

Если type() не является Object, возвращается QJsonObject().

QString QJsonValue::toString() const

Преобразует значение в QString и возвращает его.

Если type() не является String, возвращается null QString.

См. также QString::isNull().

QString QJsonValue::toString(const QString &defaultValue) const

Преобразует значение в QString и возвращает его.

Если type() не является String, возвращается defaultValue.

QVariant QJsonValue::toVariant() const

Преобразует значение в QVariant().

Типы QJsonValue будут преобразованы следующим образом:

Постоянная Описание
Null QMetaType::Nullptr
Bool QMetaType::Bool
Double QMetaType::Double или QMetaType::LongLong
String QString
Array QVariantList
Object QVariantMap
Undefined QVariant()

См. также fromVariant().

QJsonValue::Type QJsonValue::type() const

Возвращает тип значения.

См. также QJsonValue::Type.

bool QJsonValue::operator!=(const QJsonValue &other) const

Возвращает true если значение не равно other.

bool QJsonValue::operator==(const QJsonValue &other) const

Возвращает true если значение равно other.

[since 5.10] const QJsonValue QJsonValue::operator[](const QString &key) const

Возвращает QJsonValue, представляющее значение для ключа key.

Эквивалентно вызову toObject().value(key).

Возвращаемое QJsonValue равно QJsonValue::Undefined, если ключ не существует или если isObject() равно false.

Данная функция была добавлена в Qt 5.10.

См. также QJsonValue, QJsonValue::isUndefined() и QJsonObject.

[since 5.14] const QJsonValue QJsonValue::operator[](QStringView key) const

Это перегруженная функция.

Данная функция была добавлена в Qt 5.14.

[since 5.10] const QJsonValue QJsonValue::operator[](QLatin1String key) const

Это перегруженная функция.

Данная функция была добавлена в Qt 5.10.

[since 5.10] const QJsonValue QJsonValue::operator[](qsizetype i) const

Возвращает QJsonValue, представляющее значение для индекса i.

Эквивалентно вызову toArray().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-6.2/qjsonvalue.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API