Класс 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 следующим образом:
| Исходный тип | Целевой тип |
|---|---|
| QJsonValue::Null | |
| QJsonValue::Bool | |
| QJsonValue::Double | |
| QJsonValue::String | |
| QJsonValue::Array | |
| QJsonValue::Object | |
| QJsonValue::String. Преобразование будет использовать QUrl::toString() со флагом QUrl::FullyEncoded, чтобы обеспечить максимальную совместимость при разборе URL | |
| QJsonValue::String. Начиная с Qt 5.11, результирующая строка не будет содержать фигурных скобок | |
| Любой тип, который возвращает QCborValue::toJsonValue(). | |
| QJsonValue::Array. См. QCborValue::toJsonValue() для ограничений преобразования. | |
| 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_MARKERbool 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