En esta página

QCborValue Class

La clase QCborValue encapsula un valor en CBOR. Más...

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

Esta clase es fuertemente comparable.

Nota: Todas las funciones de esta clase son reentrantes.

Tipos Públicos

enum DiagnosticNotationOption { Compact, LineWrapped, ExtendedFormat }
flags DiagnosticNotationOptions
enum EncodingOption { NoTransformation, UseFloat, UseFloat16, UseIntegers }
flags EncodingOptions
enum Type { Integer, ByteArray, String, Array, Map, …, Uuid }

Funciones Públicas

QCborValue()
QCborValue(QCborArray &&a)
QCborValue(QCborMap &&m)
QCborValue(QCborSimpleType st)
QCborValue(QCborValue::Type t_)
QCborValue(QStringView s)
QCborValue(bool b)
QCborValue(const QByteArray &ba)
QCborValue(const QCborArray &a)
QCborValue(const QCborMap &m)
QCborValue(const QDateTime &dt)
QCborValue(const QRegularExpression &rx)
QCborValue(const QString &s)
QCborValue(const QUrl &url)
QCborValue(const QUuid &uuid)
QCborValue(double d)
QCborValue(qint64 i)
QCborValue(std::nullptr_t)
QCborValue(QCborKnownTags tag, const QCborValue &tv = QCborValue())
QCborValue(QCborTag tag, const QCborValue &tv = QCborValue())
QCborValue(QLatin1StringView s)
QCborValue(const QCborValue &other)
QCborValue(QCborValue &&other)
~QCborValue()
int compare(const QCborValue &other) const
bool isArray() const
bool isBool() const
bool isByteArray() const
bool isContainer() const
bool isDateTime() const
bool isDouble() const
bool isFalse() const
bool isInteger() const
bool isInvalid() const
bool isMap() const
bool isNull() const
bool isRegularExpression() const
bool isSimpleType() const
bool isSimpleType(QCborSimpleType st) const
bool isString() const
bool isTag() const
bool isTrue() const
bool isUndefined() const
bool isUrl() const
bool isUuid() const
void swap(QCborValue &other)
QCborTag tag(QCborTag defaultValue = QCborTag(-1)) const
QCborValue taggedValue(const QCborValue &defaultValue = QCborValue()) const
QCborArray toArray() const
QCborArray toArray(const QCborArray &defaultValue) const
bool toBool(bool defaultValue = false) const
QByteArray toByteArray(const QByteArray &defaultValue = {}) const
QByteArray toCbor(QCborValue::EncodingOptions opt = NoTransformation) const
void toCbor(QCborStreamWriter &writer, QCborValue::EncodingOptions opt = NoTransformation) const
QDateTime toDateTime(const QDateTime &defaultValue = {}) const
QString toDiagnosticNotation(QCborValue::DiagnosticNotationOptions opts = Compact) const
double toDouble(double defaultValue = 0) const
qint64 toInteger(qint64 defaultValue = 0) const
QJsonValue toJsonValue() const
QCborMap toMap() const
QCborMap toMap(const QCborMap &defaultValue) const
QRegularExpression toRegularExpression(const QRegularExpression &defaultValue = {}) const
QCborSimpleType toSimpleType(QCborSimpleType defaultValue = QCborSimpleType::Undefined) const
QString toString(const QString &defaultValue = {}) const
(since 6.10) QAnyStringView toStringView(QAnyStringView defaultValue = {}) const
QUrl toUrl(const QUrl &defaultValue = {}) const
QUuid toUuid(const QUuid &defaultValue = {}) const
QVariant toVariant() const
QCborValue::Type type() const
QCborValue &operator=(const QCborValue &other)
QCborValue &operator=(QCborValue &&other)
QCborValueRef operator[](const QString &key)
const QCborValue operator[](const QString &key) const
QCborValueRef operator[](QLatin1StringView key)
QCborValueRef operator[](qint64 key)
const QCborValue operator[](QLatin1StringView key) const
const QCborValue operator[](qint64 key) const

Miembros públicos estáticos

QCborValue fromCbor(QCborStreamReader &reader)
QCborValue fromCbor(const QByteArray &ba, QCborParserError *error = nullptr)
QCborValue fromCbor(const char *data, qsizetype len, QCborParserError *error = nullptr)
QCborValue fromCbor(const quint8 *data, qsizetype len, QCborParserError *error = nullptr)
QCborValue fromJsonValue(const QJsonValue &v)
QCborValue fromVariant(const QVariant &variant)
bool operator!=(const QCborValue &lhs, const QCborValue &rhs)
bool operator<(const QCborValue &lhs, const QCborValue &rhs)
bool operator<=(const QCborValue &lhs, const QCborValue &rhs)
bool operator==(const QCborValue &lhs, const QCborValue &rhs)
bool operator>(const QCborValue &lhs, const QCborValue &rhs)
bool operator>=(const QCborValue &lhs, const QCborValue &rhs)

Descripción detallada

Esta clase se puede utilizar para contener uno de los muchos tipos disponibles en CBOR. CBOR es la Representación Concisa de Objetos Binarios, una forma muy compacta de codificación de datos binarios que es un superconjunto de JSON. Fue creada por el grupo de trabajo CoRE (Constrained RESTful Environments) del IETF, que la ha utilizado en muchas nuevas RFC. Está pensado para ser utilizado junto con el protocolo CoAP.

CBOR tiene tres grupos de tipos incorporados:

  • Tipos básicos: enteros, coma flotante (doble), booleanos, nulos, etc.
  • Tipos de cadena: cadenas y matrices de bytes.
  • Contenedores: matrices y mapas

Además, CBOR admite una forma de extensibilidad de tipos mediante la asociación de una "etiqueta" a uno de los tipos anteriores para transmitir más información. Por ejemplo, un UUID se representa mediante una etiqueta y una matriz de bytes que contiene los 16 bytes del contenido del UUID. QCborValue soporta la creación y decodificación de varios de esos tipos extendidos directamente con clases Qt (como QUuid).

Para ver la lista completa, consulta QCborValue::Type. El tipo de un QCborValue puede consultarse utilizando type() o una de las funciones "isXxxx".

Tipos ampliados y valores etiquetados

Un valor etiquetado es un QCborValue normal emparejado con un número que es su etiqueta. Consulte QCborKnownTags para obtener más información sobre las etiquetas de la API, así como la lista oficial completa. Estas combinaciones forman tipos extendidos.

QCborValue admite ciertos tipos extendidos en la API, como URL (con QUrl) y UUID (con QUuid). Otros tipos extendidos no soportados en la API se representan mediante un QCborValue de tipo Tag. La etiqueta puede recuperarse posteriormente mediante tag() y el valor etiquetado mediante taggedValue().

Para garantizar la compatibilidad futura, los QCborValues que contienen tipos Qt extendidos se comparan con el tipo de etiqueta del mismo contenido. En otras palabras, la siguiente expresión es verdadera:

QCborValue(uuid) == QCborValue(QCborKnownTags::Uuid, uuid.toRfc4122());

Valores indefinidos y nulos

QCborValue puede contener un valor "null", que no es de ningún tipo específico. Se asemeja al tipo std::nullptr_t de C++, cuyo único valor posible es nullptr. QCborValue tiene un constructor que toma dicho tipo y crea un QCborValue nulo.

Los valores nulos se utilizan para indicar que un valor opcional no está presente. En ese aspecto, es similar al tipo de la biblioteca estándar de C++ std::optional cuando está desactivado. A diferencia del tipo de C++, los valores nulos de CBOR son simplemente del tipo "Null" y no es posible determinar a qué tipo concreto está sustituyendo.

QCborValue también puede ser del tipo undefined, que representa un valor "indefinido". De hecho, eso es lo que crea el constructor por defecto de QCborValue.

Los valores indefinidos son diferentes de los valores nulos. Mientras que los nulos se utilizan para indicar un valor opcional que no se proporciona, Undefined se suele utilizar para indicar que no se ha podido proporcionar un valor esperado, normalmente debido a un error o a una condición previa que no se ha podido satisfacer.

Estos valores son completamente válidos y pueden aparecer en los flujos CBOR, a diferencia del contenido JSON y del bit Undefined de QJsonValue. Pero al igual que QJsonValue's Undefined, es devuelto por value() de un contenedor CBOR u operador de sólo lectura[] para búsquedas no válidas (índice fuera de rango para QCborArray, o clave no encontrada para QCborMap). No es posible distinguir un caso así del valor de Undefined, por lo que si es necesario, compruebe el tamaño de QCborArray y utilice la API del iterador QCborMap.

Tipos simples

CBOR soporta tipos simples adicionales que, al igual que Null y Undefined, no llevan ningún otro valor. Se denominan indistintamente "Tipos Simples" y "Valores Simples". CBOR codifica los booleanos como dos tipos distintos (uno para true y otro para false), pero QCborValue tiene una API de conveniencia para ellos.

Actualmente no hay otros tipos simples CBOR definidos. QCborValue los soporta simplemente por su número con API como isSimpleType() y toSimpleType(), disponibles para compatibilidad con futuras especificaciones antes de que la API de Qt pueda ser actualizada. Se desaconseja su uso antes de dicha especificación, ya que otras implementaciones CBOR podrían no soportarlos completamente.

Soporte CBOR

QCborValue soporta todas las características CBOR necesarias para crear flujos canónicos y estrictos. Implementa casi todas las características especificadas en RFC 7049.

En la siguiente tabla se enumeran las funciones CBOR compatibles con QCborValue.

CaracterísticaSoporte
Números sin signoSí (qint64 range)
Números negativosSí (qint64 range)
Cadenas de bytes
Cadenas de texto
Cadenas fragmentadasVéase más abajo
EtiquetasSí (arbitrarias)
Booleanos
Nulo
Indefinido
Valores simples arbitrarios
Flotante de media precisión (16 bits)
Flotante de precisión simple (32 bits)
Flotante de doble precisión (64 bits)
Infinitos y coma flotante NaN
Matrices y mapas de longitud determinada
Matrices y mapas de longitud indeterminada
Tipos de clave de mapa distintos de cadenas y enterosSí (arbitrario)

Los enteros en QCborValue están limitados al rango del tipo qint64. Es decir, de -9.223.372.036.854.775.808 (-263) a 9.223.372.036.854.775.807 (263 - 1). El propio CBOR puede representar valores enteros fuera de este rango, que QCborValue no admite. Al decodificar un flujo usando fromCbor() que contenga uno de esos valores, QCborValue convertirá automáticamente a Double, pero eso puede perder hasta 11 bits de precisión.

fromCbor() es capaz de decodificar cadenas en trozos, pero siempre fusionará los trozos en un único QCborValue. Por esa razón, siempre escribe cadenas sin trozos cuando se utiliza toCbor() (que es requerido por el formato Canonical de todos modos).

QCborValue siempre convertirá los valores de coma flotante de precisión media y simple del flujo CBOR a doble precisión. La función toCbor() puede tomar un parámetro indicando recrearlos.

QCborValueRef

QCborValueRef es una clase auxiliar para QCborArray y QCborMap. Es el tipo que se obtiene al utilizar una de las API de mutación de esas clases. A diferencia de QCborValue, se pueden asignar nuevos valores a esa clase. Al hacerlo, el array o mapa al que hace referencia se modificará con el nuevo valor. En todos los demás aspectos, su API es idéntica a QCborValue.

Véase también QCborArray, QCborMap, QCborStreamReader, QCborStreamWriter, QJsonValue, QJsonDocument, Serialization Converter, y Parsing and displaying CBOR data.

Documentación de tipos de miembros

enum QCborValue::DiagnosticNotationOption
flags QCborValue::DiagnosticNotationOptions

Este enum se utiliza en el argumento de opción de toDiagnosticNotation(), para modificar el formato de salida.

ConstanteValorDescripción
QCborValue::Compact0x00No utiliza saltos de línea, produciendo una representación compacta.
QCborValue::LineWrapped0x01Utiliza saltos de línea, un QCborValue por línea.
QCborValue::ExtendedFormat0x02Utiliza algunas opciones diferentes para representar valores, que no se encuentran en la RFC 7049. Estas opciones están sujetas a cambios.

Actualmente, ExtendedFormat cambiará cómo se representan las matrices de bytes. Sin ella, siempre están codificadas en hexadecimal y sin espacios. Con ella, QCborValue::toCbor() utilizará codificación hexadecimal con espacios, base64 o base64url, dependiendo del contexto.

El tipo DiagnosticNotationOptions es un typedef para QFlags<DiagnosticNotationOption>. Almacena una combinación OR de valores DiagnosticNotationOption.

Véase también toDiagnosticNotation().

enum QCborValue::EncodingOption
flags QCborValue::EncodingOptions

Este enum se utiliza en el argumento options de toCbor(), modificando el comportamiento del codificador.

ConstanteValorDescripción
QCborValue::NoTransformation0(Por defecto) No realiza transformaciones.
QCborValue::UseFloat0x02Indica al codificador que utilice la coma flotante de precisión simple IEEE 754 (es decir, float) siempre que sea posible.
QCborValue::UseFloat16UseFloat | 0x04Indica al codificador que utilice la coma flotante de media precisión IEEE 754 (es decir, qfloat16), siempre que sea posible. Implica UseFloat.
QCborValue::UseIntegers0x08Indica al codificador que utilice números enteros siempre que un valor de tipo Double contenga un número entero.

El uso de UseFloat16 es necesario para codificar el flujo en formato canónico, pero no es necesario en otros casos.

El tipo EncodingOptions es un typedef para QFlags<EncodingOption>. Almacena una combinación OR de valores EncodingOption.

Véase también toCbor().

enum QCborValue::Type

Este enum representa el tipo QCborValue. Es devuelto por la función type().

Los tipos CBOR incorporados son:

ConstanteValorDescripción
QCborValue::Integer0x00qint64: Un valor entero
QCborValue::ByteArray0x40QByteArrayuna matriz de bytes ("cadena de bytes")
QCborValue::String0x60QStringuna cadena Unicode ("cadena de texto")
QCborValue::Array0x80QCborArrayuna matriz de QCborValues
QCborValue::Map0xa0QCborMapun contenedor asociativo de QCborValues
QCborValue::SimpleType0x100QCborSimpleTypeuno de varios tipos simples/valores
QCborValue::FalseSimpleType + int(QCborSimpleType::False)boolel tipo simple de valor false
QCborValue::TrueSimpleType + int(QCborSimpleType::True)boolel tipo simple para el valor true
QCborValue::NullSimpleType + int(QCborSimpleType::Null)std::nullptr_tel tipo simple para el valor nulo
QCborValue::UndefinedSimpleType + int(QCborSimpleType::Undefined)(sin tipo) el tipo simple para el valor indefinido
QCborValue::Double0x202doubleuna coma flotante de doble precisión
QCborValue::Invalid-1No es un valor válido, esto suele indicar un error de descodificación CBOR

Además, QCborValue puede representar tipos extendidos:

ConstanteValorDescripción
QCborValue::Tag0xc0Un tipo extendido desconocido o no reconocido, representado por su etiqueta (a QCborTag) y el valor etiquetado (a QCborValue)
QCborValue::DateTime0x10000QDateTimeun sello de fecha y hora
QCborValue::Url0x10020QUrluna URL o URI
QCborValue::RegularExpression0x10023QRegularExpressionel patrón de una expresión regular
QCborValue::Uuid0x10025QUuidun UUID

Véase también type().

Documentación de las funciones miembro

QCborValue::QCborValue()

Crea un QCborValue del tipo Undefined.

Los valores indefinidos CBOR se utilizan para indicar que falta información, normalmente como resultado de una operación anterior que no se completó como se esperaba. También los utilizan las API QCborArray y QCborMap para indicar que no se ha encontrado el elemento buscado.

Los valores indefinidos están representados por la API Undefined simple type. Por ello, los QCborValues con valores indefinidos también devolverán verdadero para isSimpleType() y isSimpleType(QCborSimpleType::Undefined).

Los valores indefinidos son diferentes de los valores nulos.

Los objetos QCborValue con valores indefinidos también son diferentes de los objetos QCborValue no válidos. La API no creará QCborValues inválidos, pero pueden existir como resultado de un error de análisis.

Véase también isUndefined(), isNull() y isSimpleType().

QCborValue::QCborValue(QCborSimpleType st)

Crea un QCborValue de tipo simple st. El tipo puede recuperarse posteriormente utilizando toSimpleType() así como isSimpleType(st).

Los tipos simples CBOR son tipos que no tienen ningún valor asociado, como el tipo std::nullptr_t de C++, cuyo único valor posible es nullptr.

Si st es QCborSimpleType::Null, el QCborValue resultante será del tipo Null y de forma similar para QCborSimpleType::Undefined. Si st es QCborSimpleType::False o QCborSimpleType::True, el QCborValue creado será un booleano que contendrá un valor de falso o verdadero, respectivamente.

Esta función puede utilizarse con tipos simples no definidos en la API. Por ejemplo, para crear un QCborValue con el tipo simple 12, se podría escribir:

Los tipos simples no deben utilizarse hasta que se haya publicado una especificación para ellos, ya que otras implementaciones podrían no soportarlos adecuadamente. Los valores de tipo simple 24 a 31 están reservados y no deben utilizarse.

isSimpleType(), isNull(), isUndefined(), isTrue(), isFalse()

QCborValue::QCborValue(QCborValue::Type t_)

Crea un QCborValue de tipo t_. El valor asociado a dicho tipo (si existe) se construirá por defecto.

Véase también type().

QCborValue::QCborValue(QStringView s)

Crea un QCborValue con valor de cadena s. El valor puede recuperarse posteriormente utilizando toString().

Véase también toString(), isString() y isByteArray().

QCborValue::QCborValue(bool b)

Crea un QCborValue con valor booleano b. El valor puede recuperarse posteriormente utilizando toBool().

Internamente, los booleanos CBOR se representan mediante un par de tipos, uno para verdadero y otro para falso. Por esa razón, los booleanos QCborValues devolverán verdadero para isSimpleType() y uno de isSimpleType(QCborSimpleType::False) o isSimpleType(QCborSimpleType::True).

Véase también toBool(), isBool(), isTrue(), isFalse() y isSimpleType().

QCborValue::QCborValue(const QByteArray &ba)

Crea un QCborValue con valor de matriz de bytes ba. El valor puede recuperarse posteriormente utilizando toByteArray().

Véase también toByteArray(), isByteArray() y isString().

QCborValue::QCborValue(const QCborArray &a)

QCborValue::QCborValue(QCborArray &&a)

Crea un QCborValue con la matriz a. El array puede recuperarse posteriormente utilizando toArray().

Véase también toArray(), isArray() y isMap().

QCborValue::QCborValue(const QCborMap &m)

QCborValue::QCborValue(QCborMap &&m)

Crea un QCborValue con el mapa m. El mapa puede recuperarse posteriormente utilizando toMap().

Véase también toMap(), isMap() y isArray().

[explicit] QCborValue::QCborValue(const QDateTime &dt)

Crea un objeto QCborValue del tipo extendido fecha/hora y que contiene el valor representado por dt. El valor puede recuperarse posteriormente mediante toDateTime().

Los tipos de fecha/hora CBOR son tipos de extensión que utilizan etiquetas: una cadena (en formato de fecha ISO) etiquetada como DateTime o un número (de segundos desde el inicio de 1970, UTC) etiquetado como UnixTime_t. Al analizar flujos CBOR, QCborValue convertirá UnixTime_t al tipo basado en cadena.

Véase también toDateTime(), isDateTime() y taggedValue().

[explicit] QCborValue::QCborValue(const QRegularExpression &rx)

Crea un objeto QCborValue del tipo extendido patrón de expresión regular y que contiene el valor representado por rx. El valor puede recuperarse posteriormente utilizando toRegularExpression().

El tipo de expresión regular CBOR es un tipo extendido representado por una cadena etiquetada como RegularExpression. Tenga en cuenta que las expresiones regulares CBOR sólo almacenan los patrones, por lo que cualquier indicador que pueda llevar el objeto QRegularExpression se perderá.

Véase también toRegularExpression(), isRegularExpression(), y taggedValue().

QCborValue::QCborValue(const QString &s)

Crea un QCborValue con valor de cadena s. El valor puede recuperarse posteriormente utilizando toString().

Véase también toString(), isString() y isByteArray().

[explicit] QCborValue::QCborValue(const QUrl &url)

Crea un objeto QCborValue del tipo extendido URL y que contiene el valor representado por url. El valor puede recuperarse posteriormente utilizando toUrl().

El tipo CBOR URL es un tipo extendido representado por una cadena etiquetada como Url.

Véase también toUrl(), isUrl() y taggedValue().

[explicit] QCborValue::QCborValue(const QUuid &uuid)

Crea un objeto QCborValue del tipo extendido UUID y que contiene el valor representado por uuid. El valor puede recuperarse posteriormente utilizando toUuid().

El tipo UUID de CBOR es un tipo extendido representado por una matriz de bytes etiquetada como Uuid.

Véase también toUuid(), isUuid() y taggedValue().

QCborValue::QCborValue(double d)

Crea un QCborValue con valor de coma flotante d. El valor puede recuperarse posteriormente utilizando toDouble().

Los valores de coma flotante CBOR son distintos de los valores enteros. Por lo tanto, los objetos QCborValue con enteros se compararán de forma diferente a los objetos QCborValue con coma flotante, aunque los valores contenidos en los objetos sean equivalentes.

Véase también toDouble(), isDouble(), y isInteger().

QCborValue::QCborValue(qint64 i)

Crea un QCborValue con valor entero i. El valor puede recuperarse posteriormente utilizando toInteger().

Los valores enteros CBOR son distintos de los valores de coma flotante. Por lo tanto, los objetos QCborValue con enteros se compararán de forma diferente a los objetos QCborValue que contienen coma flotante, aunque los valores contenidos en los objetos sean equivalentes.

Véase también toInteger(), isInteger(), y isDouble().

QCborValue::QCborValue(std::nullptr_t)

Crea un QCborValue del tipo Null.

Los valores nulos CBOR se utilizan para indicar valores opcionales que no se han proporcionado. Se diferencian de los valores indefinidos en que los valores nulos no suelen ser el resultado de un error o problema anterior.

Véase también isNull(), isUndefined() y isSimpleType().

QCborValue::QCborValue(QCborTag tag, const QCborValue &tv = QCborValue())

QCborValue::QCborValue(QCborKnownTags tag, const QCborValue &tv = QCborValue())

Crea un QCborValue para el tipo extendido representado por el valor de etiqueta tag, valor de etiqueta tv. La etiqueta puede recuperarse posteriormente mediante tag() y el valor etiquetado mediante taggedValue().

Véase también isTag(), tag(), taggedValue() y QCborKnownTags.

QCborValue::QCborValue(QLatin1StringView s)

Crea un QCborValue con la cadena Latin-1 vista por s. El valor puede recuperarse posteriormente utilizando toString().

Se trata de una función sobrecargada.

Véase también toString(), isString(), y isByteArray().

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

Copia el contenido de other en este objeto.

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

Mueve el contenido del objeto other QCborValue a éste y libera los recursos de éste.

Se trata de una función sobrecargada.

[noexcept] QCborValue::~QCborValue()

Elimina el objeto QCborValue actual y libera los recursos asociados.

int QCborValue::compare(const QCborValue &other) const

Compara este valor y other, y devuelve un entero que indica si este valor debe ordenarse antes (si el resultado es negativo) o después de other (si el resultado es positivo). Si esta función devuelve 0, los dos valores son iguales y tienen el mismo contenido.

Si cada QCborValue contiene un array o un mapa, la comparación es recursiva a los elementos contenidos en ellos.

Tipos extendidos

QCborValue compara igual un QCborValue que contenga un tipo extendido, como Url y Url y su representación etiquetada equivalente. Así, por ejemplo, la siguiente expresión es verdadera:

QCborValue(QUrl("https://example.com")) == QCborValue(QCborKnownTags::Url, "https://example.com");

Tenga en cuenta que los tipos Qt como QUrl y QDateTime normalizarán y modificarán de otro modo sus argumentos. La expresión anterior es verdadera sólo porque la cadena de la derecha es el valor normalizado que tomaría el QCborValue de la izquierda. Si, por ejemplo, la parte "https" estuviera en mayúsculas en ambos lados, la comparación fallaría. Para más información sobre las normalizaciones realizadas por QCborValue, consulte la documentación del constructor que toma el tipo Qt en cuestión.

Orden de clasificación

El orden de clasificación en CBOR se define en el RFC 7049, sección 3.9, que trata de la clasificación de claves en un mapa cuando se sigue la codificación canónica. Según la especificación, "la ordenación se realiza en los bytes de la representación de los elementos de datos clave" y enumera como consecuencias que:

  • "Si dos claves tienen longitudes diferentes, la más corta se ordena antes;"
  • "Si dos claves tienen la misma longitud, la de menor valor en orden léxico (byte a byte) se ordena antes".

Esto da lugar a una ordenación sorprendente de QCborValues, en la que el resultado de esta función es distinto del que se obtendría posteriormente comparando los elementos contenidos. Por ejemplo, el QCborValue que contiene la cadena "zzz" ordena antes que el QCborValue con la cadena "foobar", aunque al comparar como QStrings o QByteArrays el "zzz" ordena después de "foobar" (orden de diccionario).

La especificación no indica claramente qué orden de clasificación debe hacerse para valores de distintos tipos (dice que la clasificación no debe prestar "atención a la división de 3/5 bits para los tipos principales"). QCborValue asume que los tipos también deben ordenarse. Los valores numéricos de la enumeración QCborValue::Type están en ese orden, con la excepción de los tipos extendidos, que se comparan como sus equivalentes etiquetados.

Nota: El orden de clasificación es preliminar y está sujeto a cambios. Las aplicaciones no deberían depender por el momento del orden devuelto por esta función.

Véase también QCborArray::compare(), QCborMap::compare(), y operator==().

[static] QCborValue QCborValue::fromCbor(QCborStreamReader &reader)

Decodifica un elemento del flujo CBOR que se encuentra en reader y devuelve la representación equivalente. Esta función es recursiva: si el elemento es un mapa o una matriz, descodificará todos los elementos encontrados en ese mapa o matriz, hasta terminar con el objeto más externo.

No es necesario utilizar esta función en el elemento raíz de un QCborStreamReader. Por ejemplo, el siguiente código ilustra cómo omitir la etiqueta de firma CBOR del principio de un archivo:

if (reader.isTag() && reader.toTag() == QCborKnownTags::Signature)
    reader.next();

QCborValue contents = QCborValue::fromCbor(reader);

El valor devuelto puede estar parcialmente completo y ser indistinguible de un QCborValue válido aunque la descodificación haya fallado. Para determinar si hubo un error, compruebe si reader.lastError() está indicando una condición de error. Esta función detiene la descodificación inmediatamente después del primer error.

Véase también toCbor(), toDiagnosticNotation(), toVariant() y toJsonValue().

[static] QCborValue QCborValue::fromCbor(const QByteArray &ba, QCborParserError *error = nullptr)

Decodifica un elemento del flujo CBOR que se encuentra en la matriz de bytes ba y devuelve la representación equivalente. Esta función es recursiva: si el elemento es un mapa o matriz, decodificará todos los elementos encontrados en ese mapa o matriz, hasta terminar con el objeto más externo.

Esta función almacena el estado de error, si lo hay, en el objeto apuntado por error, junto con el desplazamiento del lugar donde se produjo el error. Si no se produjo ningún error, almacena NoError en el estado de error y el número de bytes que consumió (es decir, almacena el desplazamiento del primer byte no utilizado). El uso de esta información permite analizar otros datos que puedan existir en la misma matriz de bytes.

El valor devuelto puede estar parcialmente completo y ser indistinguible de un QCborValue válido aunque la descodificación haya fallado. Para determinar si hubo un error, compruebe si hubo un error almacenado en error. Esta función detiene la descodificación inmediatamente después del primer error.

Se trata de una función sobrecargada.

Véase también toCbor(), toDiagnosticNotation(), toVariant(), y toJsonValue().

[static] QCborValue QCborValue::fromCbor(const char *data, qsizetype len, QCborParserError *error = nullptr)

[static] QCborValue QCborValue::fromCbor(const quint8 *data, qsizetype len, QCborParserError *error = nullptr)

Convierte len bytes de data a un QByteArray y luego llama a la sobrecarga de esta función que acepta un QByteArray, pasando también error, si se proporciona.

[static] QCborValue QCborValue::fromJsonValue(const QJsonValue &v)

Convierte el valor JSON contenido en v en su correspondiente valor CBOR y lo devuelve. No hay pérdida de datos al convertir de JSON a CBOR, ya que el conjunto de tipos CBOR es más rico que el de JSON. Además, los valores convertidos a CBOR mediante esta función se pueden volver a convertir a JSON mediante toJsonValue() sin pérdida de datos.

La siguiente tabla muestra la correspondencia entre los tipos JSON y los tipos CBOR:

Tipo JSONTipo CBOR
BoolBool
NúmeroEntero (si el número no tiene fracción y está en el rango qint64 ) o Doble
CadenaCadena
MatrizMatriz
ObjetoMapa
NuloNulo

QJsonValue también puede ser indefinido, indicando una operación anterior que no se completó (por ejemplo, la búsqueda de una clave no presente en un objeto). Los valores indefinidos no son tipos JSON y no pueden aparecer en arrays y objetos JSON, pero esta función devuelve el valor indefinido QCborValue si el correspondiente QJsonValue está indefinido.

Véase también toJsonValue(), fromVariant(), QCborArray::fromJsonArray() y QCborMap::fromJsonObject().

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

Convierte el QVariant variant en QCborValue y lo devuelve.

QVariants puede contener una gran lista de metatipos diferentes, muchos de los cuales no tienen una representación correspondiente en CBOR. Esto incluye todos los metatipos definidos por el usuario. Al preparar la transmisión utilizando CBOR, se sugiere codificar cuidadosamente cada valor para evitar la pérdida de representación.

La siguiente tabla enumera la conversión que aplicará esta función:

Tipo Qt (C++)Tipo CBOR
inválido (QVariant())Indefinido
boolBool
std::nullptr_tNulo
short, ushort, int, uint, qint64Entero
quint64Integer, o Double si está fuera del rango de qint64
float, doubleDoble
QByteArrayByteArray
QDateTimeDateTime
QCborSimpleTypeTipo simple
QJsonArrayMatriz, convertida mediante QCborArray::formJsonArray()
QJsonDocumentMatriz o mapa
QJsonObjectMap, convertido usando QCborMap::fromJsonObject()
QJsonValueconvertido mediante fromJsonValue()
QRegularExpressionRegularExpression
QStringCadena
QStringListMatriz
QVariantHashMapa
QVariantListMatriz
QVariantMapMapa
QUrlUrl
QUuidUuid

Si QVariant::isNull() devuelve verdadero, se devuelve un QCborValue 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.

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 CBOR indefinido. Tenga en cuenta que QVariant::toString() también tiene pérdidas para la mayoría de los tipos.

Tenga en cuenta que las conversiones mediante QVariant::toString() están sujetas a cambios en cualquier momento. Tanto QVariant como QCborValue 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(), fromJsonValue(), QCborArray::toVariantList(), QCborMap::toVariantMap() y QJsonValue::fromVariant().

bool QCborValue::isArray() const

Devuelve true si este QCborValue es de tipo array. El valor del array se puede recuperar utilizando toArray().

Véase también type() y toArray().

bool QCborValue::isBool() const

Devuelve true si este QCborValue es un booleano. El valor puede recuperarse utilizando toBool().

Véase también type(), toBool(), isTrue() y isFalse().

bool QCborValue::isByteArray() const

Devuelve true si este QCborValue es de tipo matriz de bytes. El valor de la matriz de bytes puede recuperarse utilizando toByteArray().

Véase también type() y toByteArray().

bool QCborValue::isContainer() const

Esta función devuelve verdadero si QCborValue es una matriz o un mapa.

Véase también isArray() y isMap().

bool QCborValue::isDateTime() const

Devuelve true si este QCborValue es del tipo fecha/hora. El valor puede recuperarse utilizando toDateTime(). Las fechas/horas son tipos extendidos que utilizan la etiqueta DateTime.

Además, al descodificar desde un flujo CBOR, QCborValue interpretará las etiquetas de valor UnixTime_t y las convertirá en la fecha/hora equivalente.

Véase también type() y toDateTime().

bool QCborValue::isDouble() const

Devuelve true si este QCborValue es de tipo punto flotante. El valor puede recuperarse utilizando toDouble().

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

bool QCborValue::isFalse() const

Devuelve verdadero si este QCborValue es un booleano con valor falso. Esta función existe porque, internamente, los booleanos CBOR se almacenan como dos tipos separados, uno para verdadero y otro para falso.

Véase también type(), isBool(), isTrue() y toBool().

bool QCborValue::isInteger() const

Devuelve true si este QCborValue es de tipo entero. El valor entero puede recuperarse utilizando toInteger().

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

bool QCborValue::isInvalid() const

Devuelve true si este QCborValue no es de ningún tipo válido. Los QCborValues inválidos son distintos de aquellos con valores indefinidos y normalmente representan un error de decodificación.

Véase también isUndefined() y isNull().

bool QCborValue::isMap() const

Devuelve true si este QCborValue es de tipo map. El valor del mapa puede recuperarse utilizando toMap().

Véase también type() y toMap().

bool QCborValue::isNull() const

Devuelve true si este QCborValue es de tipo null.

Los valores nulos CBOR se utilizan para indicar valores opcionales que no se han proporcionado. Se diferencian de los valores indefinidos en que los valores nulos no suelen ser el resultado de un error o problema anterior.

Los valores nulos son distintos de los valores indefinidos y de los objetos QCborValue no válidos. La API no creará QCborValues no válidos, pero pueden existir como resultado de un error de análisis.

Véase también type(), isUndefined() y isInvalid().

bool QCborValue::isRegularExpression() const

Devuelve true si este QCborValue contiene un patrón de expresión regular. El patrón puede recuperarse utilizando toRegularExpression().

Véase también type() y toRegularExpression().

bool QCborValue::isSimpleType() const

Devuelve true si este QCborValue es de uno de los tipos simples CBOR. El tipo en sí puede recuperarse posteriormente utilizando type(), incluso para tipos que no tienen una enumeración en la API. También pueden comprobarse con la sobrecarga isSimpleType(QCborSimpleType).

Véase también QCborSimpleType, isSimpleType(QCborSimpleType), y toSimpleType().

bool QCborValue::isSimpleType(QCborSimpleType st) const

Devuelve true si este QCborValue es de tipo simple y toSimpleType() devolvería st, false en caso contrario. Esta función puede utilizarse para comprobar cualquier tipo simple CBOR, incluso aquellos para los que no existe enumeración en la API. Por ejemplo, para el tipo simple de valor 12, se podría escribir:

value.isSimpleType(QCborSimpleType(12));

Esta es una función sobrecargada.

Ver también QCborValue::QCborValue(QCborSimpleType), isSimpleType(), isFalse(), isTrue(), isNull, isUndefined(), y toSimpleType().

bool QCborValue::isString() const

Devuelve true si este QCborValue es de tipo string. El valor de la cadena puede recuperarse utilizando toString().

Véase también type() y toString().

bool QCborValue::isTag() const

Devuelve true si este QCborValue es del tipo tag. El valor de la etiqueta puede recuperarse utilizando tag() y el valor etiquetado utilizando taggedValue().

Esta función también devuelve true para los tipos extendidos que reconoce la API. Para el código que maneja tipos extendidos directamente antes de que la API de Qt se actualice para soportarlos, es posible recrear el par etiqueta + valor etiquetado utilizando taggedValue().

Véase también type(), tag(), y taggedValue().

bool QCborValue::isTrue() const

Devuelve verdadero si este QCborValue es un booleano con valor verdadero. Esta función existe porque, internamente, los booleanos CBOR se almacenan como dos tipos separados, uno para falso y otro para verdadero.

Véase también type(), isBool(), isFalse() y toBool().

bool QCborValue::isUndefined() const

Devuelve verdadero si este QCborValue es de tipo indefinido.

Los valores no definidos de CBOR se utilizan para indicar que falta información, normalmente como resultado de una operación anterior que no se completó como se esperaba. También se utilizan en las API QCborArray y QCborMap para indicar que no se ha encontrado el elemento buscado.

Los valores indefinidos son distintos de los valores nulos.

QCborValue Los objetos con valores indefinidos también son distintos de los objetos QCborValue no válidos. La API no creará QCborValues no válidos, pero pueden existir como resultado de un error de análisis sintáctico.

Véase también type(), isNull() y isInvalid().

bool QCborValue::isUrl() const

Devuelve true si este QCborValue es de tipo URL. El valor de la URL puede recuperarse utilizando toUrl().

Véase también type() y toUrl().

bool QCborValue::isUuid() const

Devuelve true si este QCborValue contiene un UUID. El valor puede recuperarse utilizando toUuid().

Véase también type() y toUuid().

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

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

QCborTag QCborValue::tag(QCborTag defaultValue = QCborTag(-1)) const

Devuelve la etiqueta de este objeto extendido QCborValue, si es del tipo etiqueta, defaultValue en caso contrario.

CBOR representa los tipos extendidos asociando un número (la etiqueta) a una representación almacenada. Esta función devuelve ese número. Para recuperar la representación, utilice taggedValue().

Véase también isTag(), taggedValue(), isDateTime(), isUrl(), isRegularExpression() y isUuid().

QCborValue QCborValue::taggedValue(const QCborValue &defaultValue = QCborValue()) const

Devuelve el valor etiquetado de este objeto extendido QCborValue, si es del tipo etiquetado, defaultValue en caso contrario.

CBOR representa tipos extendidos asociando un número (la etiqueta) con una representación almacenada. Esta función devuelve dicha representación. Para recuperar la etiqueta, utilice tag().

Véase también isTag(), tag(), isDateTime(), isUrl(), isRegularExpression() y isUuid().

QCborArray QCborValue::toArray() const

QCborArray QCborValue::toArray(const QCborArray &defaultValue) const

Devuelve el valor del array almacenado en este QCborValue, si es del tipo array. En caso contrario, devuelve defaultValue.

Tenga en cuenta que esta función no realiza ninguna conversión de otros tipos a QCborArray.

Véase también isArray(), isByteArray(), isMap(), isContainer() y toMap().

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

Devuelve el valor booleano almacenado en este QCborValue, si es de tipo booleano. En caso contrario, devuelve defaultValue.

Véase también isBool(), isTrue() y isFalse().

QByteArray QCborValue::toByteArray(const QByteArray &defaultValue = {}) const

Devuelve el valor de la matriz de bytes almacenada en este QCborValue, si es del tipo matriz de bytes. En caso contrario, devuelve defaultValue.

Tenga en cuenta que esta función no realiza ninguna conversión de otros tipos a QByteArray.

Véase también isByteArray(), isString() y toString().

QByteArray QCborValue::toCbor(QCborValue::EncodingOptions opt = NoTransformation) const

Codifica este objeto QCborValue a su representación CBOR, utilizando las opciones especificadas en opt, y devuelve la matriz de bytes que contiene dicha representación.

Esta función no fallará, excepto si este QCborValue o cualquiera de los elementos contenidos, si se trata de un mapa o matriz, no son válidos. Los tipos inválidos no son producidos normalmente por la API, pero pueden resultar de errores de decodificación.

Por defecto, esta función no realiza ninguna transformación en los valores de QCborValue, escribiendo todos los puntos flotantes directamente como tipos de doble precisión (double). Si se especifica la opción UseFloat, utilizará precisión simple (float) para cualquier valor de coma flotante para el que no haya pérdida de precisión al utilizar esa representación. Esto incluye infinitos y valores NaN.

Del mismo modo, si se especifica UseFloat16, esta función intentará utilizar media precisión (qfloat16) en coma flotante si la conversión a la misma no conlleva pérdida de precisión. Esto es siempre cierto para infinitos y NaN.

Si se especifica UseIntegers, utilizará enteros para cualquier valor de coma flotante que contenga un entero real.

Véase también fromCbor(), fromVariant() y fromJsonValue().

void QCborValue::toCbor(QCborStreamWriter &writer, QCborValue::EncodingOptions opt = NoTransformation) const

Codifica este objeto QCborValue a su representación CBOR, utilizando las opciones especificadas en opt, al escritor especificado por writer. El mismo escritor puede ser usado por múltiples QCborValues, por ejemplo, para codificar diferentes elementos en un array mayor.

Esta función no fallará, excepto si este QCborValue o cualquiera de los elementos contenidos, si se trata de un mapa o array, no son válidos. Los tipos inválidos no son producidos normalmente por la API, pero pueden resultar de errores de decodificación.

Por defecto, esta función no realiza ninguna transformación en los valores de QCborValue, escribiendo todos los puntos flotantes directamente como tipos de doble precisión (binary64). Si se especifica la opción UseFloat, utilizará precisión simple (binary32) para cualquier valor de coma flotante para el que no haya pérdida de precisión al utilizar esa representación. Esto incluye infinitos y valores NaN.

Del mismo modo, si se especifica UseFloat16, esta función tratará de utilizar media precisión (binary16) de punto flotante si la conversión a que no resulta en la pérdida de precisión. Esto es siempre cierto para infinitos y NaN.

Si se especifica UseIntegers, utilizará enteros para cualquier valor de coma flotante que contenga un entero real.

Se trata de una función sobrecargada.

Véase también fromCbor(), fromVariant() y fromJsonValue().

QDateTime QCborValue::toDateTime(const QDateTime &defaultValue = {}) const

Devuelve el valor de fecha/hora almacenado en este QCborValue, si es del tipo extendido fecha/hora. En caso contrario, devuelve defaultValue.

Tenga en cuenta que esta función no realiza ninguna conversión de otros tipos a QDateTime.

Véase también isDateTime(), isTag() y taggedValue().

QString QCborValue::toDiagnosticNotation(QCborValue::DiagnosticNotationOptions opts = Compact) const

Crea la notación de diagnóstico equivalente a este objeto CBOR y la devuelve. El parámetro opts controla el dialecto de la notación. La notación de diagnóstico es útil en la depuración, para ayudar al desarrollador a comprender qué valor se almacena en QCborValue o en un flujo CBOR. Por esa razón, la API de Qt no proporciona soporte para analizar el diagnóstico de nuevo en el formato en memoria o flujo CBOR, aunque la representación es única y sería posible.

La notación de diagnóstico CBOR se especifica en la sección 6 del RFC 7049. Es una representación de texto del flujo CBOR y es muy similar a JSON, pero soporta los tipos CBOR que no se encuentran en JSON. El formato extendido habilitado por la bandera ExtendedFormat se encuentra actualmente en algunos borradores del IETF y su formato está sujeto a cambios.

Esta función produce la representación equivalente del flujo que produciría toCbor(), sin ninguna opción de transformación proporcionada allí. Esto también implica que esta función puede no producir una representación del flujo que se utilizó para crear el objeto, si se creó utilizando fromCbor(), ya que esa función puede haber aplicado transformaciones. Para una notación de alta fidelidad de un flujo, sin transformación, véase el ejemplo cbordump.

Véase también toCbor() y QJsonDocument::toJson().

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

Devuelve el valor en coma flotante almacenado en este QCborValue, si es de tipo Double. Si es de tipo Integer, esta función devuelve el valor entero convertido a double. En cualquier otro caso, devuelve defaultValue.

Véase también isDouble(), isInteger() y toInteger().

qint64 QCborValue::toInteger(qint64 defaultValue = 0) const

Devuelve el valor entero almacenado en este QCborValue, si es de tipo entero. Si es de tipo Double, esta función devuelve el valor en coma flotante convertido a entero. En cualquier otro caso, devuelve defaultValue.

Véase también isInteger(), isDouble() y toDouble().

QJsonValue QCborValue::toJsonValue() const

Convierte este objeto QCborValue a una representación equivalente en JSON y lo devuelve como QJsonValue.

Tenga en cuenta que CBOR contiene un conjunto de tipos más rico y amplio que JSON, por lo que puede perderse algo de información en esta conversión. La siguiente tabla compara los tipos CBOR con los tipos JSON e indica si se puede perder información o no.

Tipo CBORTipo JSONComentarios
BoolBoolNo es posible la pérdida de datos
DobleNúmeroLos infinitos y NaN se convertirán a Null; no hay pérdida de datos para otros valores
EnteroNúmeroPosible pérdida de datos en la conversión si el entero es mayor que253 o menor que -253.
NuloNuloNo hay pérdida de datos posible
IndefinidoNuloInformación de tipo perdida
CadenaCadenaNo es posible perder información
Matriz de bytesCadenaSe convierte a una codificación sin pérdidas como Base64url, pero se pierde la distinción entre cadenas y matrices de bytes.
Otros tipos simplesCadenaSe pierde la información de tipo
MatrizMatrizLa conversión se aplica a cada valor contenido
MapaObjetoLas claves se convierten en cadenas; los valores se convierten según esta tabla
Etiquetas y tipos ampliadosEspecialSe pierde el número de etiqueta y el valor etiquetado se convierte a JSON

Para obtener información sobre la conversión de claves de mapa CBOR a cadena, consulte QCborMap::toJsonObject().

Si este QCborValue contiene el valor indefinido, esta función devolverá un QJsonValue indefinido también. Tenga en cuenta que JSON no admite valores indefinidos y que los QJsonValues indefinidos son una extensión de la especificación. No pueden mantenerse en QJsonArray o QJsonObject, pero pueden devolverse desde funciones para indicar un fallo. A todos los demás efectos, son iguales que null.

Tratamiento especial de etiquetas y tipos extendidos

Algunas etiquetas se tratan de forma especial y cambian la transformación del valor etiquetado de CBOR a JSON. La siguiente tabla enumera estos casos especiales:

EtiquetaTipo CBORTransformación
ExpectedBase64urlMatriz de bytesCodifica la matriz de bytes como Base64url
ExpectedBase64Matriz de bytesCodifica la matriz de bytes como Base64
ExpectedBase16Matriz de bytesCodifica la matriz de bytes como hexadecimal
UrlUrl y cadenaUtiliza QUrl::toEncoded() para normalizar la codificación al formato de codificación completa de la URL.
UuidUuid y matriz de bytesUtiliza QUuid::toString() para crear la representación de cadena

Véase también fromJsonValue(), toVariant(), QCborArray::toJsonArray() y QCborMap::toJsonObject().

QCborMap QCborValue::toMap() const

QCborMap QCborValue::toMap(const QCborMap &defaultValue) const

Devuelve el valor del mapa almacenado en este QCborValue, si es del tipo mapa. En caso contrario, devuelve defaultValue.

Tenga en cuenta que esta función no realiza ninguna conversión de otros tipos a QCborMap.

Véase también isMap(), isArray(), isContainer(), y toArray().

QRegularExpression QCborValue::toRegularExpression(const QRegularExpression &defaultValue = {}) const

Devuelve el valor de expresión regular almacenado en este QCborValue, si es del tipo extendido de patrón de expresión regular. En caso contrario, devuelve defaultValue.

Tenga en cuenta que esta función no realiza ninguna conversión de otros tipos a QRegularExpression.

Véase también isRegularExpression(), isTag(), y taggedValue().

QCborSimpleType QCborValue::toSimpleType(QCborSimpleType defaultValue = QCborSimpleType::Undefined) const

Devuelve el tipo simple de este QCborValue, si es un tipo simple. Si no es un tipo simple, devuelve defaultValue.

Los siguientes tipos son tipos simples y esta función devolverá los valores listados:

Véase también type(), isSimpleType(), isBool(), isTrue(), isFalse(), isNull(), y isUndefined().

QString QCborValue::toString(const QString &defaultValue = {}) const

Devuelve el valor de cadena almacenado en este QCborValue, si es de tipo cadena. En caso contrario, devuelve defaultValue.

Tenga en cuenta que esta función no realiza ninguna conversión de otros tipos a QString.

Véase también toStringView(), isString(), isByteArray() y toByteArray().

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

Devuelve el valor de cadena almacenado en este QCborValue, si es de tipo cadena. En caso contrario, devuelve defaultValue. Dado que QCborValue 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 del objeto CBOR padre (mapa o matriz).

Observe que esta función no realiza ninguna conversión de otros tipos a QString.

Esta función se introdujo en Qt 6.10.

Véase también toString(), isString(), isByteArray(), y toByteArray().

QUrl QCborValue::toUrl(const QUrl &defaultValue = {}) const

Devuelve el valor de URL almacenado en este QCborValue, si es del tipo URL extendido. En caso contrario, devuelve defaultValue.

Tenga en cuenta que esta función no realiza ninguna conversión de otros tipos a QUrl.

Véase también isUrl(), isTag() y taggedValue().

QUuid QCborValue::toUuid(const QUuid &defaultValue = {}) const

Devuelve el valor UUID almacenado en este QCborValue, si es del tipo extendido UUID. En caso contrario, devuelve defaultValue.

Tenga en cuenta que esta función no realiza ninguna conversión de otros tipos a QUuid.

Véase también isUuid(), isTag() y taggedValue().

QVariant QCborValue::toVariant() const

Convierte este valor a un tipo nativo de Qt y devuelve el correspondiente QVariant.

La siguiente tabla enumera el mapeo realizado entre QCborValue types y Qt meta types.

Tipo CBORTipo Qt o CNotas
Enteroqint64
Dobledouble
Boolbool
Nulostd::nullptr_t
No definidosin tipo (QVariant())
Matriz de bytesQByteArray
CadenaQString
MatrizQVariantListConvierte recursivamente todos los valores
MapaQVariantMapLos tipos de clave se "stringifican"
Otros tipos simplesQCborSimpleType
DateTimeQDateTime
UrlQUrl
RegularExpressionQRegularExpression
UuidQUuid
Otras etiquetasEspecialLa etiqueta se ignora y el valor etiquetado se convierte utilizando esta función

Tenga en cuenta que los valores tanto en CBOR Maps como en Arrays se convierten recursivamente utilizando esta función también y se colocan en QVariantMap y QVariantList en su lugar. No encontrarás QCborMap y QCborArray almacenados dentro de las QVariants.

Los QVariantMaps tienen claves de cadena, a diferencia de los CBOR, por lo que la conversión de un QCborMap a QVariantMap implicará un paso de "stringificación" de los valores clave. Véase QCborMap::toJsonObject() para más detalles.

Véase también fromVariant(), toJsonValue(), QCborArray::toVariantList(), y QCborMap::toVariantMap().

QCborValue::Type QCborValue::type() const

Devuelve el tipo de este QCborValue. El tipo también puede recuperarse posteriormente mediante una de las funciones "isXxx".

Véase también isInteger(), isByteArray(), isString(), isArray(), isMap(), isTag(), isFalse(), isTrue(), isBool(), isNull(), isUndefined, isDouble(), isDateTime(), isUrl(), isRegularExpression(), y isUuid().

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

Sustituye el contenido de este QCborObject por una copia de other.

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

Mueve el contenido del objeto other QCborValue a éste y libera los recursos de éste. Devuelve una referencia a este objeto.

Esta es una función sobrecargada.

QCborValueRef QCborValue::operator[](const QString &key)

Devuelve un QCborValueRef que puede usarse para leer o modificar la entrada en this, como un mapa, con el key dado. Cuando este QCborValue es un QCborMap, esta función es equivalente al operador de correspondencia[] en ese mapa.

Antes de devolver la referencia: si este QCborValue era un array, primero se convierte en un mapa (de forma que map[i] es array[i] para cada índice, i, con array[i] válido ); en caso contrario, si no era un mapa se sobreescribirá con un mapa vacío.

Véase también operator[](qint64), QCborMap::operator[], QCborMap::value(), y QCborMap::find().

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

Si este QCborValue es un QCborMap, busca en los elementos el valor cuya clave coincide con key. Si no hay ninguna clave que coincida con key en el mapa o si este objeto QCborValue no es un mapa, devuelve el valor indefinido.

Esta función es equivalente a:

value.toMap().value(key);

Véase también operator[](qint64), QCborMap::operator[], QCborMap::value(), y QCborMap::find().

QCborValueRef QCborValue::operator[](QLatin1StringView key)

Devuelve un QCborValueRef que puede usarse para leer o modificar la entrada en this, como un mapa, con el key dado. Cuando este QCborValue es un QCborMap, esta función es equivalente al operador de correspondencia[] en ese mapa.

Antes de devolver la referencia: si este QCborValue era un array, primero se convierte en un mapa (de modo que map[i] es array[i] para cada índice, i, con array[i] válido ); de lo contrario, si no era un mapa se sobreescribirá con un mapa vacío.

Se trata de una función sobrecargada.

Véase también operator[](qint64), QCborMap::operator[], QCborMap::value(), y QCborMap::find().

QCborValueRef QCborValue::operator[](qint64 key)

Devuelve un QCborValueRef que puede usarse para leer o modificar la entrada en this, como un mapa o array, con el key dado. Cuando este QCborValue es un QCborMap o, para 0 <= clave < 0x10000, un QCborArray, esta función es equivalente al operador de correspondencia[] en ese mapa o array.

Antes de devolver la referencia: si este QCborValue era un array pero la clave está fuera de rango, el array se convierte primero en un mapa (de modo que map[i] es array[i] para cada índice, i, con array[i] válido ); de lo contrario, si no era un mapa se sobreescribirá con un mapa vacío.

Se trata de una función sobrecargada.

Véase también operator[], QCborMap::operator[], QCborMap::value(), QCborMap::find(), QCborArray::operator[], y QCborArray::at().

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

Si este QCborValue es un QCborMap, busca en los elementos el valor cuya clave coincide con key. Si no hay ninguna clave que coincida con key en el mapa o si este objeto QCborValue no es un mapa, devuelve el valor indefinido.

Esta función es equivalente a:

value.toMap().value(key);

Esta es una función sobrecargada.

Véase también operator[](qint64), QCborMap::operator[], QCborMap::value(), y QCborMap::find().

const QCborValue QCborValue::operator[](qint64 key) const

Si este QCborValue es un QCborMap, busca en los elementos el valor cuya clave coincide con key. Si esto es un QCborArray, devuelve el elemento cuyo índice es key. Si no hay ningún valor coincidente en el array o mapa, o si este objeto QCborValue no es un array o mapa, devuelve el valor indefinido.

Se trata de una función sobrecargada.

Véase también operator[], QCborMap::operator[], QCborMap::value(), QCborMap::find(), QCborArray::operator[], y QCborArray::at().

No miembros relacionados

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

Compara lhs y rhs, y devuelve verdadero si los contenidos difieren, falso en caso contrario. Si cada QCborValue contiene un array o mapa, la comparación es recursiva a los elementos contenidos en ellos.

Para más información sobre la igualdad CBOR en Qt, véase, QCborValue::compare().

Véase también compare(), QCborMap::operator==(), operator==(), y operator<().

[noexcept] bool operator<(const QCborValue &lhs, const QCborValue &rhs)

Compara lhs y rhs, y devuelve verdadero si lhs debe ordenarse antes que rhs, falso en caso contrario. Si cada QCborValue contiene un array o mapa, la comparación es recursiva a los elementos contenidos en ellos.

Para más información sobre el orden CBOR, véase QCborValue::compare().

Véase también compare(), QCborValue::operator==(), QCborMap::operator==(), operator==() y operator!=().

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

Compara lhs y rhs, y devuelve verdadero si lhs debe ordenarse antes que rhs o está siendo igual a rhs, falso en caso contrario. Si cada QCborValue contiene un array o mapa, la comparación es recursiva a los elementos contenidos en ellos.

Para más información sobre el orden de clasificación CBOR, véase QCborValue::compare().

Véase también compare(), QCborValue::operator<(), QCborMap::operator==(), operator==() y operator!=().

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

Compara lhs y rhs, y devuelve verdadero si tienen el mismo contenido, falso en caso contrario. Si cada QCborValue contiene un array o mapa, la comparación es recursiva a los elementos contenidos en ellos.

Para más información sobre la igualdad CBOR en Qt, véase, compare().

Véase también compare(), QCborMap::operator==(), operator!=() y operator<().

[noexcept] bool operator>(const QCborValue &lhs, const QCborValue &rhs)

Compara lhs y rhs, y devuelve verdadero si lhs debe ordenarse después de rhs, falso en caso contrario. Si cada QCborValue contiene un array o mapa, la comparación es recursiva a los elementos contenidos en ellos.

Para más información sobre el orden CBOR, véase QCborValue::compare().

Véase también compare(), QCborValue::operator>=(), QCborMap::operator==(), operator==() y operator!=().

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

Compara lhs y rhs, y devuelve verdadero si lhs debe ordenarse después de rhs o está siendo igual a rhs, falso en caso contrario. Si cada QCborValue contiene un array o mapa, la comparación es recursiva a los elementos contenidos en ellos.

Para más información sobre el orden de clasificación CBOR, véase QCborValue::compare().

Véase también compare(), QCborValue::operator>(), QCborMap::operator==(), operator==() y operator!=().

© 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.