En esta página

QJsonValue Class

La clase QJsonValue encapsula un valor en JSON. Más...

Cabecera: #include <QJsonValue>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Esta clase es igual-comparable.

Esta clase es comparable con QJsonValueConstRef y QJsonValueRef.

Nota: Todas las funciones de esta clase son reentrantes.

Tipos Públicos

(since 6.9) JsonFormat
enum Type { Null, Bool, Double, String, Array, …, Undefined }

Funciones Públicas

QJsonValue(QJsonValue::Type type = Null)
QJsonValue(QLatin1StringView s)
QJsonValue(bool b)
QJsonValue(const QJsonArray &a)
QJsonValue(const QJsonObject &o)
QJsonValue(const QString &s)
QJsonValue(const char *s)
QJsonValue(double v)
(since 6.3) QJsonValue(QJsonArray &&a)
(since 6.3) QJsonValue(QJsonObject &&o)
QJsonValue(int v)
QJsonValue(qint64 v)
QJsonValue(const QJsonValue &other)
QJsonValue(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)
QJsonArray toArray(const QJsonArray &defaultValue) const
QJsonArray toArray() const
bool toBool(bool defaultValue = false) const
double toDouble(double defaultValue = 0) const
int toInt(int defaultValue = 0) const
(since 6.0) qint64 toInteger(qint64 defaultValue = 0) const
(since 6.9) QByteArray toJson(QJsonValue::JsonFormat format = JsonFormat::Indented) const
QJsonObject toObject(const QJsonObject &defaultValue) const
QJsonObject toObject() const
QString toString() const
QString toString(const QString &defaultValue) const
(since 6.10) QAnyStringView toStringView(QAnyStringView defaultValue = {}) const
QVariant toVariant() const
QJsonValue::Type type() const
QJsonValue &operator=(QJsonValue &&other)
QJsonValue &operator=(const QJsonValue &other)
const QJsonValue operator[](const QString &key) const
const QJsonValue operator[](qsizetype i) const
const QJsonValue operator[](QLatin1StringView key) const
const QJsonValue operator[](QStringView key) const

Miembros públicos estáticos

(since 6.9) QJsonValue fromJson(QByteArrayView json, QJsonParseError *error = nullptr)
QJsonValue fromVariant(const QVariant &variant)
bool operator!=(const QJsonValue &lhs, const QJsonValue &rhs)
bool operator==(const QJsonValue &lhs, const QJsonValue &rhs)

Descripción detallada

Un valor en JSON puede ser uno de los 6 tipos básicos:

JSON es un formato para almacenar datos estructurados. Tiene 6 tipos de datos básicos:

Un valor puede representar cualquiera de los tipos de datos anteriores. Además, QJsonValue tiene una bandera especial para representar valores indefinidos. Puede consultarse con isUndefined().

El tipo del valor puede consultarse con type() o con accesores como isBool(), isString(), etc. Del mismo modo, el valor puede convertirse al tipo almacenado en él mediante toBool(), toString(), etc.

Los valores están estrictamente tipados internamente y, al contrario que QVariant, no intentarán realizar conversiones de tipo implícitas. Esto implica que la conversión a un tipo que no está almacenado en el valor devolverá un valor de retorno construido por defecto.

QJsonValueRef

QJsonValueRef es una clase de ayuda para QJsonArray y QJsonObject. Cuando obtienes un objeto de tipo QJsonValueRef, puedes utilizarlo como si fuera una referencia a un QJsonValue. Si le asignas algo, la asignación se aplicará al elemento de QJsonArray o QJsonObject del que obtuviste la referencia.

Los siguientes métodos devuelven QJsonValueRef:

Ver también Soporte JSON en Qt y Guardar y Cargar un Juego.

Documentación de tipos de miembros

[alias, since 6.9] QJsonValue::JsonFormat

Igual que QJsonDocument::JsonFormat.

Este typedef se introdujo en Qt 6.9.

enum QJsonValue::Type

Este enum describe el tipo del valor JSON.

ConstanteValorDescripción
QJsonValue::Null0x0Un valor nulo
QJsonValue::Bool0x1Un valor booleano. Utilice toBool() para convertir a bool.
QJsonValue::Double0x2Un valor numérico. Utilice toDouble() para convertirlo en doble o toInteger() para convertirlo en qint64.
QJsonValue::String0x3Una cadena. Utilice toString() para convertir a QString.
QJsonValue::Array0x4Una matriz. Utilice toArray() para convertir a QJsonArray.
QJsonValue::Object0x5Un objeto. Utilice toObject() para convertir a QJsonObject.
QJsonValue::Undefined0x80El valor es indefinido. Esto se devuelve normalmente como una condición de error, cuando se intenta leer un valor fuera de límites en un array o una clave inexistente en un objeto.

Documentación de las funciones miembro

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

Crea un QJsonValue de tipo type.

Por defecto se crea un valor Nulo.

QJsonValue::QJsonValue(QLatin1StringView s)

Crea un valor de tipo String, con la cadena Latin-1 vista por s.

QJsonValue::QJsonValue(bool b)

Crea un valor de tipo Bool, con valor b.

QJsonValue::QJsonValue(const QJsonArray &a)

Crea un valor de tipo Array, con valor a.

QJsonValue::QJsonValue(const QJsonObject &o)

Crea un valor de tipo Object, con valor o.

QJsonValue::QJsonValue(const QString &s)

Crea un valor de tipo String, con valor s.

QJsonValue::QJsonValue(const char *s)

Crea un valor de tipo String con valor s, asumiendo codificación UTF-8 de la entrada.

Puede desactivar este constructor definiendo QT_NO_CAST_FROM_ASCII cuando compile sus aplicaciones.

QJsonValue::QJsonValue(double v)

Crea un valor de tipo Double, con valor v.

[noexcept, since 6.3] QJsonValue::QJsonValue(QJsonArray &&a)

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.3.

[noexcept, since 6.3] QJsonValue::QJsonValue(QJsonObject &&o)

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.3.

QJsonValue::QJsonValue(int v)

Crea un valor de tipo Double, con valor v.

Se trata de una función sobrecargada.

QJsonValue::QJsonValue(qint64 v)

Crea un valor de tipo Double, con valor v.

Se almacena internamente como un entero de 64 bits, por lo que conserva toda su precisión, siempre que se recupere con toInteger(). Sin embargo, si se recupera su valor con toDouble() perderá precisión a menos que el valor se encuentre entre ±2^53.

Se trata de una función sobrecargada.

Véase también toInteger() y toDouble().

[noexcept] QJsonValue::QJsonValue(const QJsonValue &other)

Crea una copia de other.

[noexcept] QJsonValue::QJsonValue(QJsonValue &&other)

Move-construye un QJsonValue a partir de other.

[noexcept] QJsonValue::~QJsonValue()

Destruye el valor.

[static, since 6.9] QJsonValue QJsonValue::fromJson(QByteArrayView json, QJsonParseError *error = nullptr)

Analiza json como un valor JSON codificado en UTF-8 y crea un QJsonValue a partir de él.

Devuelve un QJsonValue válido si el análisis se realiza correctamente. Si falla, el valor devuelto será undefined, y la variable opcional error contendrá más detalles sobre el error.

Esta función se introdujo en Qt 6.9.

Véase también QJsonParseError, isUndefined(), y toJson().

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

Convierte variant en un QJsonValue y lo devuelve.

La conversión convertirá los tipos QVariant de la siguiente manera:

Tipo de origenTipo de destino
QJsonValue::Null
QJsonValue::Bool
QJsonValue::Double
QJsonValue::String
QJsonValue::Array
QJsonValue::Object
QJsonValue::String. La conversión utilizará QUrl::toString() con la bandera QUrl::FullyEncoded, para garantizar la máxima compatibilidad al analizar la URL
QJsonValue::String. Desde Qt 5.11, la cadena resultante no incluirá llaves
Cualquiera que sea el tipo QCborValue::toJsonValue() devuelve .
QJsonValue::Array. Véase QCborValue::toJsonValue() para las restricciones de conversión.
QJsonValue::Map. Véase QCborValue::toJsonValue() para las restricciones de conversión y la "stringificación" de las claves del mapa.
Pérdida de información y otros tipos

QVariant pueden contener más información de la que es representable en JSON. Si el QVariant no es uno de los tipos anteriores, la conversión no está garantizada y está sujeta a cambios en futuras versiones de Qt, como ocurrió con el UUID. El código debería esforzarse por no utilizar otros tipos que los listados anteriormente.

Si QVariant::isNull() devuelve verdadero, se devuelve un QJsonValue nulo o se inserta en la lista u objeto, independientemente del tipo que lleve QVariant. Observe que el cambio de comportamiento en Qt 6.0 que afecta a QVariant::isNull() también afecta a esta función.

Un valor en coma flotante que sea infinito o NaN se convertirá en un valor JSON nulo. Desde Qt 6.0, QJsonValue puede almacenar la precisión completa de cualquier entero con signo de 64 bits sin pérdida, pero en versiones anteriores los valores fuera del rango de ±2^53 pueden perder precisión. Los valores sin signo de 64 bits mayores o iguales a 2^63 perderán precisión o se alias a valores negativos, por lo que debería evitarse QMetaType::ULongLong.

Para otros tipos no listados anteriormente, se intentará una conversión a cadena, normalmente pero no siempre llamando a QVariant::toString(). Si la conversión falla, el valor se sustituye por un valor JSON nulo. Tenga en cuenta que QVariant::toString() también tiene pérdidas para la mayoría de los tipos. Por ejemplo, si el QVariant pasado representa datos de matriz de bytes sin procesar, se recomienda precodificarlo a Base64 (u otra codificación sin pérdida), de lo contrario se utilizará una conversión con pérdida utilizando QString::fromUtf8().

Tenga en cuenta que las conversiones mediante QVariant::toString() están sujetas a cambios en cualquier momento. Tanto QVariant como QJsonValue pueden ampliarse en el futuro para admitir más tipos, lo que provocará un cambio en la forma en que esta función realiza las conversiones.

Véase también toVariant() y QCborValue::fromVariant().

bool QJsonValue::isArray() const

Devuelve true si el valor contiene un array.

Véase también toArray().

bool QJsonValue::isBool() const

Devuelve true si el valor contiene un booleano.

Véase también toBool().

bool QJsonValue::isDouble() const

Devuelve true si el valor contiene un doble.

Véase también toDouble().

bool QJsonValue::isNull() const

Devuelve true si el valor es nulo.

bool QJsonValue::isObject() const

Devuelve true si el valor contiene un objeto.

Véase también toObject().

bool QJsonValue::isString() const

Devuelve true si el valor contiene una cadena.

Véase también toString().

bool QJsonValue::isUndefined() const

Devuelve true si el valor no está definido. Esto puede ocurrir en ciertos casos de error como, por ejemplo, al acceder a una clave no existente en un QJsonObject.

[noexcept] void QJsonValue::swap(QJsonValue &other)

Intercambia este valor con other. Esta operación es muy rápida y nunca falla.

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

Convierte el valor en un array y lo devuelve.

Si type() no es Array, se devolverá defaultValue.

QJsonArray QJsonValue::toArray() const

Convierte el valor en un array y lo devuelve.

Si type() no es Array, se devolverá un QJsonArray().

Se trata de una función sobrecargada.

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

Convierte el valor a bool y lo devuelve.

Si type() no es bool, se devolverá defaultValue.

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

Convierte el valor a double y lo devuelve.

Si type() no es Double, se devolverá defaultValue.

int QJsonValue::toInt(int defaultValue = 0) const

Convierte el valor en un int y lo devuelve.

Si type() no es Double o el valor no es un número entero, se devolverá defaultValue.

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

Convierte el valor en un entero y lo devuelve.

Si type() no es Double o el valor no es un número entero representable como qint64, se devolverá defaultValue.

Esta función se introdujo en Qt 6.0.

[since 6.9] QByteArray QJsonValue::toJson(QJsonValue::JsonFormat format = JsonFormat::Indented) const

Convierte el QJsonValue a un valor JSON codificado en UTF-8 en el format proporcionado.

Esta función se introdujo en Qt 6.9.

Véase también fromJson() y JsonFormat.

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

Convierte el valor en un objeto y lo devuelve.

Si type() no es Object, se devolverá defaultValue.

QJsonObject QJsonValue::toObject() const

Convierte el valor en un objeto y lo devuelve.

Si type() no es Object, se devolverá QJsonObject().

Se trata de una función sobrecargada.

QString QJsonValue::toString() const

Convierte el valor a QString y lo devuelve.

Si type() no es String, se devolverá un QString nulo.

Véase también QString::isNull().

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

Convierte el valor a QString y lo devuelve.

Si type() no es String, se devolverá defaultValue.

Véase también toStringView().

[since 6.10] QAnyStringView QJsonValue::toStringView(QAnyStringView defaultValue = {}) const

Devuelve el valor de cadena almacenado en este QJsonValue, si es del tipo string. En caso contrario, devuelve defaultValue. Dado que QJsonValue almacena cadenas en US-ASCII, UTF-8 o UTF-16, el QAnyStringView devuelto puede estar en cualquiera de estas codificaciones.

Esta función no asigna memoria. El valor devuelto es válido hasta la siguiente llamada a una función miembro no-const de este objeto. Si este objeto sale del ámbito, el valor de retorno es válido hasta la siguiente llamada a una función miembro no-const en el objeto JSON padre o array.

Esta función se introdujo en Qt 6.10.

Véase también toString().

QVariant QJsonValue::toVariant() const

Convierte el valor en un QVariant().

Los tipos QJsonValue se convertirán de la siguiente manera:

ConstanteDescripción
NullQMetaType::Nullptr
BoolQMetaType::Bool
DoubleQMetaType::Double o QMetaType::LongLong
StringQString
ArrayQVariantList
ObjectQVariantMap
UndefinedQVariant()

Véase también fromVariant().

QJsonValue::Type QJsonValue::type() const

Devuelve el tipo del valor.

Véase también QJsonValue::Type.

[noexcept] QJsonValue &QJsonValue::operator=(QJsonValue &&other)

Mover-asigna other a este valor.

[noexcept] QJsonValue &QJsonValue::operator=(const QJsonValue &other)

Asigna el valor almacenado en other a este objeto.

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

Devuelve un QJsonValue que representa el valor de la clave key.

Equivale a llamar a toObject().value(key).

El QJsonValue devuelto es QJsonValue::Undefined si la clave no existe, o si isObject() es falso.

Véase también QJsonValue, QJsonValue::isUndefined(), y QJsonObject.

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

Devuelve un QJsonValue que representa el valor del índice i.

Equivale a llamar a toArray().at(i).

El QJsonValue devuelto es QJsonValue::Undefined, si i está fuera de los límites, o si isArray() es falso.

Véase también QJsonValue, QJsonValue::isUndefined(), y QJsonArray.

const QJsonValue QJsonValue::operator[](QLatin1StringView key) const

Se trata de una función sobrecargada.

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

Se trata de una función sobrecargada.

No miembros relacionados

[noexcept] bool operator!=(const QJsonValue &lhs, const QJsonValue &rhs)

Devuelve true si el valor lhs no es igual al valor rhs, false en caso contrario.

[noexcept] bool operator==(const QJsonValue &lhs, const QJsonValue &rhs)

Devuelve true si el valor lhs es igual al valor rhs, false en caso contrario.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.