Sur cette page

QCborValue Class

La classe QCborValue encapsule une valeur au format CBOR. En savoir plus...

En-tête : #include <QCborValue>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core

Remarque : toutes les fonctions de cette classe sont réentrantes.

Comparaisons QCborValue

CatégorieTypes comparables
strongQCborValue

Types publics

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

Fonctions publiques

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(const void *)
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

Membres publics statiques

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)

Description détaillée

Cette classe peut être utilisée pour contenir l'un des nombreux types disponibles dans CBOR. CBOR (Concise Binary Object Representation) est un format très compact de codage de données binaires qui constitue un sur-ensemble de JSON. Il a été créé par le groupe de travail « Constrained RESTful Environments » (CoRE) de l'IETF, qui l'a utilisé dans de nombreuses nouvelles RFC. Il est destiné à être utilisé avec le protocole CoAP.

Le CBOR comporte trois groupes de types intégrés :

  • Types de base : entiers, nombres à virgule flottante (double), booléens, null, etc.
  • Types de type chaîne : chaînes de caractères et tableaux d’octets
  • Conteneurs : tableaux et tables

De plus, CBOR prend en charge une forme d’extensibilité des types en associant une « balise » à l’un des types ci-dessus afin de transmettre davantage d’informations. Par exemple, un UUID est représenté par une balise et un tableau d’octets contenant les 16 octets du contenu de l’UUID. QCborValue permet de créer et de décoder plusieurs de ces types étendus directement avec des classes Qt (comme QUuid).

Pour la liste complète, voir QCborValue::Type. Le type d’un QCborValue peut être interrogé à l’aide de la fonction type() ou de l’une des fonctions « isXxxx ».

Types étendus et valeurs balisées

Une valeur balisée est un QCborValue standard associé à un nombre qui lui sert de balise. Consultez QCborKnownTags pour plus d’informations sur les balises disponibles dans l’API ainsi que pour obtenir la liste officielle complète. Ces combinaisons forment des types étendus.

QCborValue prend en charge certains types étendus dans l'API, comme l'URL (avec ` QUrl`) et l'UUID (avec ` QUuid`). Les autres types étendus non pris en charge par l'API sont représentés par un `QCborValue` de type ` Tag `. La balise peut ensuite être récupérée à l'aide de ` tag()` et la valeur balisée à l'aide de ` taggedValue()`.

Afin d’assurer la compatibilité future, les objets `QCborValue` contenant des types Qt étendus sont considérés comme égaux au type d’étiquette ayant le même contenu. En d’autres termes, l’expression suivante est vraie :

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

Valeurs indéfinies et nulles

QCborValue peut contenir une valeur « null », qui n’appartient à aucun type spécifique. Elle s’apparente au type C++ ` std::nullptr_t `, dont la seule valeur possible est ` nullptr`. QCborValue dispose d’un constructeur acceptant ce type et créant un QCborValue nul.

Les valeurs null sont utilisées pour indiquer qu’une valeur facultative est absente. À cet égard, elles sont similaires au type « std::optional » de la bibliothèque standard C++ lorsqu’il est désactivé. Contrairement au type C++, les valeurs null CBOR sont simplement de type « Null » et il n’est pas possible de déterminer quel type concret elles remplacent.

QCborValue peut également être de type « undefined », ce qui représente une valeur « indéfinie ». C’est d’ailleurs ce que crée le constructeur par défaut de QCborValue.

Les valeurs « Undefined » sont différentes des valeurs « null ». Alors que les valeurs « null » sont utilisées pour indiquer une valeur facultative qui n’est pas fournie, « Undefined » est généralement utilisé pour indiquer qu’une valeur attendue n’a pas pu être fournie, le plus souvent en raison d’une erreur ou d’une condition préalable qui n’a pas pu être satisfaite.

Ces valeurs sont tout à fait valides et peuvent apparaître dans des flux CBOR, contrairement au contenu JSON et au bit « undefined » de QJsonValue. Mais à l’instar de la valeur « Undefined » de QJsonValue, elle est renvoyée par la méthode value() ou l’opérateur [] en lecture seule d’un conteneur CBOR en cas de recherches non valides (index hors plage pour QCborArray, ou clé introuvable pour QCborMap). Il n’est pas possible de distinguer un tel cas de la valeur de `Undefined` ; par conséquent, si cela s’avère nécessaire, vérifiez la taille de l’ QCborArray et utilisez l’API d’itérateur QCborMap.

Types simples

CBOR prend en charge des types simples supplémentaires qui, à l’instar de « Null » et « Undefined », ne portent aucune autre valeur. Ils sont appelés indifféremment « types simples » et « valeurs simples ». CBOR encode les booléens sous la forme de deux types distincts (l’un pour true et l’autre pour false), mais QCborValue dispose d’une API pratique pour les gérer.

Il n’existe actuellement aucun autre type simple CBOR défini. QCborValue les prend en charge simplement par leur numéro grâce à des API telles que ` isSimpleType()` et ` toSimpleType()`, disponibles à des fins de compatibilité avec de futures spécifications avant que l’API Qt ne puisse être mise à jour. Leur utilisation avant la publication d’une telle spécification est déconseillée, car d’autres implémentations CBOR pourraient ne pas les prendre entièrement en charge.

Prise en charge de CBOR

QCborValue prend en charge toutes les fonctionnalités CBOR requises pour créer des flux canoniques et stricts. Il implémente la quasi-totalité des fonctionnalités spécifiées dans la RFC 7049.

Le tableau suivant répertorie les fonctionnalités CBOR prises en charge par QCborValue.

FonctionnalitéPrise en charge
Nombres non signésOui (plageqint64 )
Nombres négatifsOui (plageqint64 )
Chaînes d’octetsOui
Chaînes de texteOui
Chaînes fragmentéesVoir ci-dessous
BalisesOui (arbitraires)
Valeurs booléennesOui
NullOui
Non définiOui
Valeurs simples arbitrairesOui
Nombre à virgule flottante demi-précision (16 bits)Oui
Nombre à virgule flottante en simple précision (32 bits)Oui
Nombre à virgule flottante double précision (64 bits)Oui
Infinis et NaN en virgule flottanteOui
Tableaux et cartes de longueur déterminéeOui
Tableaux et cartes de longueur indéterminéeOui
Types de clés de table autres que les chaînes de caractères et les entiersOui (arbitraire)

Les entiers dans QCborValue sont limités à la plage du type « qint64 ». C'est-à-dire de -9 223 372 036 854 775 808 (-263) à 9 223 372 036 854 775 807 (263 - 1). Le format CBOR lui-même peut représenter des valeurs entières en dehors de cette plage, ce que QCborValue ne prend pas en charge. Lors du décodage d’un flux à l’aide de ` fromCbor()` contenant l’une de ces valeurs, QCborValue effectuera automatiquement une conversion vers ` Double`, mais cela peut entraîner une perte de précision pouvant aller jusqu’à 11 bits.

fromCbor() est capable de décoder des chaînes fragmentées, mais fusionnera toujours les fragments en un seul QCborValue. C'est pourquoi elle écrit toujours des chaînes non fragmentées lors de l'utilisation de toCbor() (ce qui est de toute façon requis par le format Canonical).

QCborValue convertit systématiquement les valeurs à virgule flottante de demi-précision et de simple précision présentes dans le flux CBOR en double précision. La fonction toCbor() peut prendre un paramètre indiquant de les recréer.

QCborValueRef

QCborValueRef est une classe d’aide pour QCborArray et QCborMap. C’est le type que vous obtenez lorsque vous utilisez l’une des API de modification de ces classes. Contrairement à QCborValue, de nouvelles valeurs peuvent être attribuées à cette classe. Une fois cela fait, le tableau ou la carte auquel elle fait référence sera modifié avec la nouvelle valeur. À tous les autres égards, son API est identique à celle de QCborValue.

Voir également QCborArray, QCborMap, QCborStreamReader, QCborStreamWriter, QJsonValue, QJsonDocument, Convertisseur de sérialisation, ainsi que Analyse et affichage des données CBOR.

Documentation sur les types de membres

enum QCborValue::DiagnosticNotationOption
flags QCborValue::DiagnosticNotationOptions

Cette énumération est utilisée dans l'argument « option » de la fonction toDiagnosticNotation(), afin de modifier le format de sortie.

ConstanteValeurDescription
QCborValue::Compact0x00N'utilise aucun saut de ligne, ce qui produit une représentation compacte.
QCborValue::LineWrapped0x01Utilise des sauts de ligne, à raison d’un QCborValue par ligne.
QCborValue::ExtendedFormat0x02Utilise certaines options différentes pour représenter les valeurs, qui ne figurent pas dans la RFC 7049. Ces options sont susceptibles d'être modifiées.

Actuellement, l'ExtendedFormat modifie la manière dont les tableaux d'octets sont représentés. Sans elle, ceux-ci sont toujours encodés en hexadécimal et sans espaces. Avec elle, la fonction QCborValue::toCbor() utilisera soit l'encodage hexadécimal avec espaces, soit l'encodage base64 ou base64url, selon le contexte.

Le type `DiagnosticNotationOptions` est un `typedef` pour ` QFlags<DiagnosticNotationOption>`. Il stocke une combinaison OR de valeurs `DiagnosticNotationOption`.

Voir également toDiagnosticNotation().

enum QCborValue::EncodingOption
flags QCborValue::EncodingOptions

Cette énumération est utilisée dans l'argument « options » de la fonction toCbor(), afin de modifier le comportement de l'encodeur.

ConstanteValeurDescription
QCborValue::NoTransformation0(Par défaut) N'effectue aucune transformation.
QCborValue::UseFloat0x02Indique à l’encodeur d’utiliser la virgule flottante à simple précision IEEE 754 (c’est-à-dire float) dans la mesure du possible.
QCborValue::UseFloat16UseFloat | 0x04Indique à l’encodeur d’utiliser le format à virgule flottante demi-précision IEEE 754 (c’est-à-dire qfloat16) dès que possible. Implique UseFloat.
QCborValue::UseIntegers0x08Indique à l’encodeur d’utiliser des entiers chaque fois qu’une valeur de type Double contient un entier.

L'utilisation de ` UseFloat16 ` est requise pour encoder le flux au format canonique, mais n'est pas nécessaire dans les autres cas.

Le type EncodingOptions est un typedef de QFlags<EncodingOption>. Il stocke une combinaison OR de valeurs EncodingOption.

Voir également toCbor().

enum QCborValue::Type

Cette énumération représente le type « QCborValue ». Elle est renvoyée par la fonction type().

Les types intégrés de CBOR sont les suivants :

ConstanteValeurDescription
QCborValue::Integer0x00qint64: Une valeur entière
QCborValue::ByteArray0x40QByteArray: un tableau d’octets (« chaîne d’octets »)
QCborValue::String0x60QString: une chaîne Unicode (« chaîne de texte »)
QCborValue::Array0x80QCborArray: un tableau de QCborValues
QCborValue::Map0xa0QCborMap: un conteneur associatif de QCborValues
QCborValue::SimpleType0x100QCborSimpleType: l’un des différents types/valeurs simples
QCborValue::FalseSimpleType + int(QCborSimpleType::False)bool: le type simple correspondant à la valeur false
QCborValue::TrueSimpleType + int(QCborSimpleType::True)bool: le type simple de la valeur true
QCborValue::NullSimpleType + int(QCborSimpleType::Null)std::nullptr_t: le type simple de la valeur nulle
QCborValue::UndefinedSimpleType + int(QCborSimpleType::Undefined)(pas de type) le type simple de la valeur indéfinie
QCborValue::Double0x202double: un nombre à virgule flottante double précision
QCborValue::Invalid-1Valeur non valide ; cela indique généralement une erreur de décodage CBOR

De plus, QCborValue peut représenter des types étendus :

ConstanteValeurDescription
QCborValue::Tag0xc0Un type étendu inconnu ou non reconnu, représenté par son identificateur ( QCborTag) et la valeur associée ( QCborValue)
QCborValue::DateTime0x10000QDateTime: un horodatage
QCborValue::Url0x10020QUrl: une URL ou un URI
QCborValue::RegularExpression0x10023QRegularExpression: le motif d'une expression régulière
QCborValue::Uuid0x10025QUuid: un UUID

Voir aussi type().

Documentation des fonctions membres

QCborValue::QCborValue()

Crée une valeur QCborValue de type « Undefined ».

Les valeurs non définies CBOR sont utilisées pour signaler des informations manquantes, généralement à la suite d’une opération précédente qui ne s’est pas déroulée comme prévu. Elles sont également utilisées par les API QCborArray et QCborMap pour indiquer que l’élément recherché n’a pas été trouvé.

Les valeurs indéfinies sont représentées par Undefined simple type. De ce fait, les objets QCborValue contenant des valeurs indéfinies renverront également « true » pour les méthodes isSimpleType() et isSimpleType(QCborSimpleType::Undefined).

Les valeurs non définies sont différentes des valeurs nulles.

Les objets `QCborValue` contenant des valeurs indéfinies sont également différents des objets `QCborValue` non valides. L’API ne crée pas d’objets `QCborValue` non valides, mais ceux-ci peuvent exister à la suite d’une erreur d’analyse.

Voir également isUndefined(), isNull() et isSimpleType().

QCborValue::QCborValue(QCborArray &&a)

QCborValue::QCborValue(const QCborArray &a)

Crée un objet ` QCborValue ` contenant le tableau ` a`. Ce tableau peut ensuite être récupéré à l'aide de la fonction ` toArray()`.

Voir également toArray(), isArray() et isMap().

QCborValue::QCborValue(QCborMap &&m)

QCborValue::QCborValue(const QCborMap &m)

Crée une instance de ` QCborValue ` avec la carte ` m`. La carte peut ensuite être récupérée à l'aide de la fonction ` toMap()`.

Voir également toMap(), isMap() et isArray().

QCborValue::QCborValue(QCborSimpleType st)

Crée un objet `QCborValue` de type simple ` st`. Ce type peut ensuite être récupéré à l'aide des méthodes ` toSimpleType()` ainsi que ` isSimpleType(st)`.

Les types simples CBOR sont des types qui ne sont associés à aucune valeur, à l'instar du type ` std::nullptr_t ` en C++, dont la seule valeur possible est ` nullptr`.

Si st est QCborSimpleType::Null, le QCborValue résultant sera de type Null, et il en va de même pour QCborSimpleType::Undefined. Si st est QCborSimpleType::False ou QCborSimpleType::True, le QCborValue créé sera un booléen contenant respectivement la valeur false ou true.

Cette fonction peut être utilisée avec des types simples non définis dans l’API. Par exemple, pour créer un QCborValue de type simple 12, on pourrait écrire :

Les types simples ne doivent pas être utilisés tant qu’une spécification les concernant n’a pas été publiée, car d’autres implémentations pourraient ne pas les prendre correctement en charge. Les valeurs de types simples comprises entre 24 et 31 sont réservées et ne doivent pas être utilisées.

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

QCborValue::QCborValue(QCborValue::Type t_)

Crée un objet `QCborValue` de type ` t_`. La valeur associée à ce type (le cas échéant) sera construite par défaut.

Voir également type().

QCborValue::QCborValue(QStringView s)

Crée un objet QCborValue avec la valeur de chaîne « s ». Cette valeur peut ensuite être récupérée à l'aide de la fonction toString().

Voir également toString(), isString() et isByteArray().

QCborValue::QCborValue(bool b)

Crée un objet `QCborValue` avec la valeur booléenne ` b`. Cette valeur peut ensuite être récupérée à l'aide de la fonction ` toBool()`.

En interne, les booléens CBOR sont représentés par une paire de types, l’un pour « true » et l’autre pour « false ». C’est pourquoi les objets QCborValue de type booléen renverront « true » pour la méthode isSimpleType() et soit isSimpleType(QCborSimpleType::False), soit isSimpleType(QCborSimpleType::True).

Voir également toBool(), isBool(), isTrue(), isFalse() et isSimpleType().

QCborValue::QCborValue(const QByteArray &ba)

Crée un objet QCborValue dont la valeur est un tableau d'octets : ba. Cette valeur peut ensuite être récupérée à l'aide de la fonction toByteArray().

Voir également toByteArray(), isByteArray() et isString().

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

Crée un objet QCborValue de type étendu « date/heure » contenant la valeur représentée par dt. Cette valeur peut ensuite être récupérée à l'aide de la fonction toDateTime().

Les types date/heure CBOR sont des types étendus utilisant des balises : soit une chaîne de caractères (au format de date ISO) balisée comme DateTime, soit un nombre (exprimé en secondes depuis le début de l'année 1970, UTC) balisé comme UnixTime_t. Lors de l'analyse des flux CBOR, QCborValue convertit UnixTime_t en type basé sur une chaîne de caractères.

Voir également toDateTime(), isDateTime() et taggedValue().

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

Crée un objet `QCborValue` de type « motif d’expression régulière étendu » contenant la valeur représentée par ` rx`. Cette valeur peut ensuite être récupérée à l’aide de la fonction ` toRegularExpression()`.

Le type d'expression régulière CBOR est un type étendu représenté par une chaîne marquée comme RegularExpression. Notez que les expressions régulières CBOR ne stockent que les motifs ; par conséquent, tous les indicateurs que l'objet QRegularExpression pourrait contenir seront perdus.

Voir également toRegularExpression(), isRegularExpression() et taggedValue().

QCborValue::QCborValue(const QString &s)

Crée un objet QCborValue avec la valeur de chaîne « s ». Cette valeur peut ensuite être récupérée à l'aide de la fonction toString().

Voir également toString(), isString() et isByteArray().

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

Crée un objet QCborValue de type étendu URL contenant la valeur représentée par url. Cette valeur peut ensuite être récupérée à l'aide de la fonction toUrl().

Le type URL CBOR est un type étendu représenté par une chaîne balisée sous la forme Url.

Voir également toUrl(), isUrl() et taggedValue().

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

Crée un objet QCborValue de type étendu UUID contenant la valeur représentée par uuid. Cette valeur peut ensuite être récupérée à l'aide de la fonction toUuid().

Le type CBOR UUID est un type étendu représenté par un tableau d’octets balisé en tant qu’ Uuid.

Voir également toUuid(), isUuid() et taggedValue().

[delete] QCborValue::QCborValue(const void *)

Construit par défaut une instance de ` QCborValue`. Cette fonction est supprimée.

QCborValue::QCborValue(double d)

Crée un objet QCborValue contenant la valeur à virgule flottante d. Cette valeur peut ensuite être récupérée à l'aide de la fonction toDouble().

Les valeurs à virgule flottante CBOR sont distinctes des valeurs entières. Par conséquent, la comparaison entre des objets `QCborValue` contenant des entiers et des objets `QCborValue` contenant des valeurs à virgule flottante donnera des résultats différents, même si les valeurs contenues dans ces objets sont équivalentes.

Voir également toDouble(), isDouble() et isInteger().

QCborValue::QCborValue(qint64 i)

Crée un objet `QCborValue` contenant la valeur entière ` i`. Cette valeur peut ensuite être récupérée à l'aide de la méthode ` toInteger()`.

Les valeurs entières CBOR sont distinctes des valeurs à virgule flottante. Par conséquent, la comparaison entre des objets `QCborValue` contenant des entiers et des objets `QCborValue` contenant des valeurs à virgule flottante donnera des résultats différents, même si les valeurs contenues dans ces objets sont équivalentes.

Voir également toInteger(), isInteger() et isDouble().

QCborValue::QCborValue(std::nullptr_t)

Crée un objet `QCborValue` de type ` Null `.

Les valeurs null CBOR sont utilisées pour indiquer des valeurs facultatives qui n’ont pas été fournies. Elles se distinguent des valeurs indéfinies en ce sens que les valeurs null ne résultent généralement pas d’une erreur ou d’un problème antérieur.

Voir également isNull(), isUndefined() et isSimpleType().

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

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

Crée un objet ` QCborValue ` pour le type étendu représenté par la valeur de balise ` tag` et la valeur balisée ` tv`. La balise peut ensuite être récupérée à l'aide de la méthode ` tag()` et la valeur balisée à l'aide de la méthode ` taggedValue()`.

Voir également isTag(), tag(), taggedValue() et QCborKnownTags.

QCborValue::QCborValue(QLatin1StringView s)

Crée un objet QCborValue contenant la chaîne Latin-1 telle qu'elle est affichée par s. La valeur peut ensuite être récupérée à l'aide de la fonction toString().

Il s'agit d'une fonction surchargée.

Voir également toString(), isString() et isByteArray().

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

Copie le contenu de ` other ` dans cet objet.

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

Transfère le contenu de l'objet QCborValue de other vers celui-ci et libère les ressources de ce dernier.

Il s'agit d'une fonction surchargée.

[noexcept] QCborValue::~QCborValue()

Supprime l'objet « QCborValue » actuel et libère toutes les ressources associées.

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

Compare cette valeur à other et renvoie un entier indiquant si cette valeur doit être triée avant (si le résultat est négatif) ou après other (si le résultat est positif). Si cette fonction renvoie 0, les deux valeurs sont égales et ont le même contenu.

Si chaque QCborValue contient un tableau ou une carte, la comparaison s’effectue de manière récursive sur les éléments qu’ils contiennent.

Types étendus

QCborValue compares considère comme égales une QCborValue contenant un type étendu, tel que Url et Url, et sa représentation balisée équivalente. Ainsi, par exemple, l’expression suivante est vraie :

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

Notez bien que les types Qt tels que QUrl et QDateTime normalisent et modifient leurs arguments. L’expression ci-dessus n’est vraie que parce que la chaîne de caractères du côté droit correspond à la valeur normalisée que prendrait l’ QCborValue du côté gauche. Si, par exemple, la partie « https » était en majuscules des deux côtés, la comparaison échouerait. Pour plus d’informations sur les normalisations effectuées par QCborValue, veuillez consulter la documentation du constructeur prenant le type Qt en question.

Ordre de tri

L’ordre de tri dans CBOR est défini dans la RFC 7049, section 3.9, qui traite du tri des clés dans une table (map) selon l’encodage canonique. Selon la spécification, « le tri s’effectue sur les octets de la représentation des éléments de données de la clé » et en déduit les conséquences suivantes :

  • « Si deux clés ont des longueurs différentes, la plus courte est triée en premier ; »
  • « Si deux clés ont la même longueur, celle dont la valeur est la plus faible selon l’ordre lexical (octet par octet) est classée en premier. »

Il en résulte un tri surprenant des QCborValues, où le résultat de cette fonction diffère de celui qui serait obtenu par la suite en comparant les éléments qu’elle contient. Par exemple, l’ QCborValue, qui contient la chaîne « zzz », est classée avant l’ QCborValue, qui contient la chaîne « foobar », alors que si l’on compare les éléments sous la forme QStrings ou QByteArrays, « zzz » vient après « foobar » (ordre lexical).

La spécification n’indique pas clairement quel ordre de tri doit être appliqué pour les valeurs de types différents (elle précise que le tri ne doit pas « tenir compte de la division en 3/5 bits pour les types majeurs »). QCborValue part du principe que les types doivent également être triés. Les valeurs numériques de l’énumération QCborValue::Type sont classées dans cet ordre, à l’exception des types étendus, qui sont comparés comme leurs équivalents balisés.

Remarque : l’ordrede tri est préliminaire et susceptible d’être modifié. Pour l’instant, les applications ne doivent pas se fier à l’ordre renvoyé par cette fonction.

Voir également QCborArray::compare(), QCborMap::compare() et operator==().

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

Décode un élément du flux CBOR présent dans reader et renvoie la représentation équivalente. Cette fonction est récursive : si l'élément est une carte ou un tableau, elle décodera tous les éléments contenus dans cette carte ou ce tableau, jusqu'à ce que l'objet le plus externe soit traité.

Il n’est pas nécessaire d’utiliser cette fonction sur l’élément racine d’un fichier « QCborStreamReader ». Par exemple, le code suivant montre comment ignorer la balise de signature CBOR au début d’un fichier :

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

QCborValue contents = QCborValue::fromCbor(reader);

La valeur renvoyée peut être partiellement complète et impossible à distinguer d’un QCborValue valide, même si le décodage a échoué. Pour déterminer s’il y a eu une erreur, vérifiez si la fonction reader.lastError() indique une condition d’erreur. Cette fonction interrompt le décodage immédiatement après la première erreur.

Voir également toCbor(), toDiagnosticNotation(), toVariant() et toJsonValue().

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

Décode un élément du flux CBOR contenu dans le tableau d'octets ba et renvoie la représentation équivalente. Cette fonction est récursive : si l'élément est une carte ou un tableau, elle décodera tous les éléments contenus dans cette carte ou ce tableau, jusqu'à ce que l'objet le plus externe soit traité.

Cette fonction stocke l’état d’erreur, le cas échéant, dans l’objet pointé par error, ainsi que le décalage correspondant à l’endroit où l’erreur s’est produite. Si aucune erreur ne s’est produite, elle stocke NoError dans l’état d’erreur ainsi que le nombre d’octets consommés (c’est-à-dire qu’elle stocke le décalage correspondant au premier octet non utilisé). L’utilisation de ces informations permet d’analyser d’autres données pouvant se trouver dans le même tableau d’octets.

La valeur renvoyée peut être partiellement complète et impossible à distinguer d’un QCborValue valide, même si le décodage a échoué. Pour déterminer s’il y a eu une erreur, vérifiez si une erreur a été enregistrée dans error. Cette fonction interrompt le décodage immédiatement après la première erreur.

Il s’agit d’une fonction surchargée.

Voir également toCbor(), toDiagnosticNotation(), toVariant() et 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)

Convertit len octets de data en un QByteArray, puis appelle la surcharge de cette fonction qui accepte un QByteArray, en transmettant également error, s'il est fourni.

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

Convertit la valeur JSON contenue dans ` v ` en sa valeur CBOR correspondante et la renvoie. La conversion de JSON vers CBOR n'entraîne aucune perte de données, car l'ensemble des types CBOR est plus riche que celui de JSON. De plus, les valeurs converties en CBOR à l'aide de cette fonction peuvent être reconverties en JSON à l'aide de ` toJsonValue()` sans aucune perte de données.

Le tableau suivant répertorie le mappage des types JSON vers les types CBOR :

Type JSONType CBOR
BoolBool
NumberEntier (si le nombre ne comporte pas de fraction et se situe dans l'intervalle qint64 ) ou Double
ChaîneChaîne
TableauTableau
ObjetCarte
NullNull

QJsonValue peut également être indéfini, ce qui indique qu’une opération précédente n’a pas pu être menée à bien (par exemple, la recherche d’une clé absente d’un objet). Les valeurs indéfinies ne sont pas des types JSON et ne peuvent pas apparaître dans les tableaux et objets JSON, mais cette fonction renvoie la valeur indéfini de QCborValue si l’ QJsonValue correspondant est indéfini.

Voir également toJsonValue(), fromVariant(), QCborArray::fromJsonArray() et QCborMap::fromJsonObject().

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

Convertit l'QVariant variant en QCborValue et le renvoie.

Les QVariants peuvent contenir une longue liste de méta-types différents, dont beaucoup n’ont pas de représentation correspondante en CBOR. Cela inclut tous les méta-types définis par l’utilisateur. Lors de la préparation d’une transmission à l’aide de CBOR, il est recommandé d’encoder soigneusement chaque valeur afin d’éviter toute perte de représentation.

Le tableau suivant répertorie les conversions appliquées par cette fonction :

Type Qt (C++)Type CBOR
invalide (QVariant())Non défini
boolBool
std::nullptr_tNull
short, ushort, int, uint, qint64entier
quint64Entier, ou Double si la valeur est hors de la plage de qint64
float, doubleDouble
QByteArrayByteArray
QDateTimeDateTime
QCborSimpleTypeType simple
QJsonArrayTableau, converti à l’aide de QCborArray::formJsonArray()
QJsonDocumentTableau ou carte
QJsonObjectCarte, convertie à l’aide de QCborMap::fromJsonObject()
QJsonValueconverti à l'aide de fromJsonValue()
QRegularExpressionRegularExpression
QStringChaîne
QStringListTableau
QVariantHashTable
QVariantListTableau
QVariantMapCarte
QUrlURL
QUuidUUID

Si QVariant::isNull() renvoie true, une valeur nulle QCborValue est renvoyée ou insérée dans la liste ou l’objet, quel que soit le type porté par QVariant. Notez que le changement de comportement dans Qt 6.0 affectant QVariant::isNull() affecte également cette fonction.

Pour les autres types non répertoriés ci-dessus, une conversion en chaîne de caractères sera tentée, généralement, mais pas systématiquement, en appelant QVariant::toString(). Si la conversion échoue, la valeur est remplacée par une valeur CBOR indéfinie. Notez que QVariant::toString() entraîne également une perte d’informations pour la majorité des types.

Veuillez noter que les conversions via QVariant::toString() sont susceptibles d’être modifiées à tout moment. Les méthodes QVariant et QCborValue pourraient être étendues à l’avenir pour prendre en charge davantage de types, ce qui entraînera une modification de la manière dont cette fonction effectue les conversions.

Voir également toVariant(), fromJsonValue(), QCborArray::toVariantList(), QCborMap::toVariantMap() et QJsonValue::fromVariant().

bool QCborValue::isArray() const

Renvoie « true » si cet objet « QCborValue » est de type tableau. La valeur du tableau peut être récupérée à l'aide de la fonction « toArray() ».

Voir également type() et toArray().

bool QCborValue::isBool() const

Renvoie « true » si cet « QCborValue » est une valeur booléenne. La valeur peut être récupérée à l'aide de la fonction « toBool() ».

Voir également type(), toBool(), isTrue() et isFalse().

bool QCborValue::isByteArray() const

Renvoie « true » si cet objet ` QCborValue ` est de type tableau d'octets. La valeur du tableau d'octets peut être récupérée à l'aide de la fonction ` toByteArray()`.

Voir également type() et toByteArray().

bool QCborValue::isContainer() const

Cette fonction pratique renvoie « true » si l'QCborValue est soit un tableau, soit une carte.

Voir également ` isArray()` et ` isMap()`.

bool QCborValue::isDateTime() const

Renvoie « true » si cet élément « QCborValue » est de type date/heure. La valeur peut être récupérée à l’aide de la fonction « toDateTime() ». Les dates et heures sont des types étendus qui utilisent la balise « DateTime ».

De plus, lors du décodage à partir d’un flux CBOR, QCborValue interprète les balises dont la valeur est UnixTime_t et les convertit en date/heure équivalente.

Voir également type() et toDateTime().

bool QCborValue::isDouble() const

Renvoie « true » si cet objet ` QCborValue ` est de type à virgule flottante. La valeur peut être récupérée à l'aide de la fonction ` toDouble()`.

Voir également type() et toDouble().

bool QCborValue::isFalse() const

Renvoie « true » si cette valeur « QCborValue » est un booléen dont la valeur est « false ». Cette fonction existe car, en interne, les booléens CBOR sont stockés sous la forme de deux types distincts, l’un pour « true » et l’autre pour « false ».

Voir également type(), isBool(), isTrue() et toBool().

bool QCborValue::isInteger() const

Renvoie « true » si cet objet ` QCborValue ` est de type entier. La valeur entière peut être récupérée à l'aide de la fonction ` toInteger()`.

Voir également type() et toInteger().

bool QCborValue::isInvalid() const

Renvoie « true » si cet objet « QCborValue » n'est pas d'un type valide. Les valeurs « QCborValues » non valides se distinguent de celles dont les valeurs sont indéfinies et indiquent généralement une erreur de décodage.

Voir également ` isUndefined()` et ` isNull()`.

bool QCborValue::isMap() const

Renvoie « true » si cet objet ` QCborValue ` est de type « map ». La valeur de la « map » peut être récupérée à l'aide de la fonction ` toMap()`.

Voir également type() et toMap().

bool QCborValue::isNull() const

Renvoie « true » si cet objet « QCborValue » est de type null.

Les valeurs null CBOR sont utilisées pour indiquer des valeurs facultatives qui n’ont pas été fournies. Elles se distinguent des valeurs non définies, dans la mesure où les valeurs null ne résultent généralement pas d’une erreur ou d’un problème antérieur.

Les valeurs null se distinguent des valeurs indéfinies et des objets « QCborValue » invalides. L’API ne crée pas de QCborValues invalides, mais celles-ci peuvent exister à la suite d’une erreur d’analyse.

Voir également type(), isUndefined() et isInvalid().

bool QCborValue::isRegularExpression() const

Renvoie « true » si cet objet ` QCborValue ` contient un motif d'expression régulière. Le motif peut être récupéré à l'aide de la fonction ` toRegularExpression()` ().

Voir également type() et toRegularExpression().

bool QCborValue::isSimpleType() const

Renvoie « true » si cet objet ` QCborValue ` correspond à l’un des types simples CBOR. Le type lui-même peut ensuite être récupéré à l’aide de la fonction ` type()`, même pour les types qui ne disposent pas d’énumération dans l’API. Ils peuvent également être vérifiés à l’aide de la surcharge de la fonction ` isSimpleType` (QCborSimpleType).

Voir également QCborSimpleType, isSimpleType(QCborSimpleType) et toSimpleType().

bool QCborValue::isSimpleType(QCborSimpleType st) const

Renvoie « true » si cet QCborValue est d'un type simple et si toSimpleType() renverrait st; renvoie « false » dans le cas contraire. Cette fonction peut être utilisée pour vérifier n'importe quel type simple CBOR, même ceux pour lesquels il n'existe pas d'énumération dans l'API. Par exemple, pour le type simple de valeur 12, vous pourriez écrire :

value.isSimpleType(QCborSimpleType(12));

Il s'agit d'une fonction surchargée.

Voir également QCborValue::QCborValue(QCborSimpleType), isSimpleType(), isFalse(), isTrue(), isNull, isUndefined() et toSimpleType().

bool QCborValue::isString() const

Renvoie « true » si cet objet « QCborValue » est de type chaîne de caractères. La valeur de la chaîne peut être récupérée à l'aide de la fonction « toString() ».

Voir également type() et toString().

bool QCborValue::isTag() const

Renvoie « true » si cet objet « QCborValue » est de type « tag ». La valeur de la balise peut être récupérée à l’aide de ` tag()` et la valeur associée à la balise à l’aide de ` taggedValue()`.

Cette fonction renvoie également la valeur true pour les types étendus reconnus par l’API. Pour le code qui gère directement les types étendus avant que l’API Qt ne soit mise à jour pour les prendre en charge, il est possible de recréer la paire balise + valeur balisée à l’aide de taggedValue().

Voir également type(), tag() et taggedValue().

bool QCborValue::isTrue() const

Renvoie « true » si cette valeur « QCborValue » est un booléen dont la valeur est « true ». Cette fonction existe car, en interne, les booléens CBOR sont stockés sous la forme de deux types distincts, l'un pour « false » et l'autre pour « true ».

Voir également type(), isBool(), isFalse() et toBool().

bool QCborValue::isUndefined() const

Renvoie « true » si cet « QCborValue » est de type « undefined ».

Les valeurs « undefined » CBOR sont utilisées pour signaler des informations manquantes, généralement à la suite d’une opération précédente qui ne s’est pas déroulée comme prévu. Elles sont également utilisées par les API QCborArray et QCborMap pour indiquer que l’élément recherché n’a pas été trouvé.

Les valeurs indéfinies sont distinctes des valeurs nulles.

QCborValue Les objets comportant des valeurs non définies diffèrent également des objets QCborValue invalides. L’API ne crée pas de valeurs QCborValues invalides, mais celles-ci peuvent exister à la suite d’une erreur d’analyse syntaxique.

Voir également type(), isNull() et isInvalid().

bool QCborValue::isUrl() const

Renvoie « true » si cet objet ` QCborValue ` est de type URL. La valeur de l'URL peut être récupérée à l'aide de la fonction ` toUrl()`.

Voir également type() et toUrl().

bool QCborValue::isUuid() const

Renvoie « true » si cet objet ` QCborValue ` contient un UUID. La valeur peut être récupérée à l'aide de la fonction ` toUuid()`.

Voir également type() et toUuid().

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

Permute cette valeur avec celle de ` other`. Cette opération est très rapide et ne rencontre jamais d'échec.

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

Renvoie l'identifiant de cet objet « extended QCborValue », s'il est de type « tag » ; sinon, renvoie « defaultValue ».

CBOR représente les types étendus en associant un nombre (la balise) à une représentation stockée. Cette fonction renvoie ce nombre. Pour récupérer la représentation, utilisez ` taggedValue()`.

Voir également isTag(), taggedValue(), isDateTime(), isUrl(), isRegularExpression() et isUuid().

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

Renvoie la valeur étiquetée de cet objet « extended QCborValue », s’il s’agit d’un type étiqueté ; sinon, renvoie « defaultValue ».

CBOR représente les types étendus en associant un nombre (la balise) à une représentation stockée. Cette fonction renvoie cette représentation. Pour récupérer la balise, utilisez tag().

Voir également isTag(), tag(), isDateTime(), isUrl(), isRegularExpression() et isUuid().

QCborArray QCborValue::toArray() const

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

Renvoie la valeur du tableau stockée dans cet objet ` QCborValue`, si celui-ci est de type tableau. Sinon, elle renvoie ` defaultValue`.

Notez que cette fonction n'effectue aucune conversion à partir d'autres types vers ` QCborArray`.

Voir également isArray(), isByteArray(), isMap(), isContainer() et toMap().

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

Renvoie la valeur booléenne stockée dans cet objet ` QCborValue`, si celle-ci est de type booléen. Sinon, elle renvoie ` defaultValue`.

Voir également isBool(), isTrue() et isFalse().

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

Renvoie la valeur du tableau d'octets stockée dans cet objet ` QCborValue`, si celui-ci est de type tableau d'octets. Sinon, elle renvoie ` defaultValue`.

Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers ` QByteArray`.

Voir également isByteArray(), isString() et toString().

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

Encode cet objet ` QCborValue ` en sa représentation CBOR, en utilisant les options spécifiées dans ` opt`, et renvoie le tableau d’octets contenant cette représentation.

Cette fonction ne renvoie pas d’erreur, sauf si cet objet ` QCborValue ` ou l’un de ses éléments (s’il s’agit d’une carte ou d’un tableau) n’est pas valide. Les types non valides ne sont généralement pas générés par l’API, mais peuvent résulter d’erreurs de décodage.

Par défaut, cette fonction n’effectue aucune transformation sur les valeurs de l’ QCborValue, en écrivant toutes les valeurs à virgule flottante directement sous forme de types à double précision (double). Si l’option UseFloat est spécifiée, elle utilisera la précision simple (float) pour toute valeur à virgule flottante pour laquelle l’utilisation de cette représentation n’entraîne aucune perte de précision. Cela inclut les infinis et les valeurs NaN.

De même, si l’option UseFloat16 est spécifiée, cette fonction tentera d’utiliser la virgule flottante en demi-précision (qfloat16) si la conversion vers ce format n’entraîne aucune perte de précision. C’est toujours le cas pour les infinis et les valeurs NaN.

Si ` UseIntegers ` est spécifié, la fonction utilisera des entiers pour toute valeur à virgule flottante contenant un entier réel.

Voir également fromCbor(), fromVariant() et fromJsonValue().

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

Encode cet objet ` QCborValue ` sous sa forme CBOR, en utilisant les options spécifiées dans ` opt`, vers l'éditeur spécifié par ` writer`. Un même éditeur peut être utilisé par plusieurs objets `QCborValues`, par exemple pour encoder différents éléments d'un tableau plus vaste.

Cette fonction ne renvoie pas d’erreur, sauf si cet objet ` QCborValue ` ou l’un des éléments qu’il contient (s’il s’agit d’une carte ou d’un tableau) n’est pas valide. Les types non valides ne sont généralement pas générés par l’API, mais peuvent résulter d’erreurs de décodage.

Par défaut, cette fonction n’effectue aucune transformation sur les valeurs de l’ QCborValue, en écrivant toutes les valeurs à virgule flottante directement sous forme de types à double précision (binary64). Si l’option UseFloat est spécifiée, elle utilisera la précision simple (binary32) pour toute valeur à virgule flottante pour laquelle l’utilisation de cette représentation n’entraîne aucune perte de précision. Cela inclut les valeurs infinies et les valeurs NaN.

De même, si l’option ` UseFloat16 ` est spécifiée, cette fonction tentera d’utiliser la précision demi-précision (binary16) si la conversion vers ce format n’entraîne aucune perte de précision. C’est toujours le cas pour les infinis et les valeurs NaN.

Si « UseIntegers » est spécifié, la fonction utilisera des entiers pour toute valeur à virgule flottante contenant un entier réel.

Il s’agit d’une fonction surchargée.

Voir également fromCbor(), fromVariant() et fromJsonValue().

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

Renvoie la valeur de date/heure stockée dans cet objet ` QCborValue`, si celui-ci est de type « date/heure étendue ». Sinon, elle renvoie ` defaultValue`.

Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers ` QDateTime`.

Voir également isDateTime(), isTag() et taggedValue().

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

Crée l'équivalent en notation de diagnostic de cet objet CBOR et le renvoie. Le paramètre ` opts ` contrôle le dialecte de la notation. La notation de diagnostic est utile lors du débogage, car elle aide le développeur à comprendre quelle valeur est stockée dans l’ QCborValue ou dans un flux CBOR. C’est pourquoi l’API Qt ne prend pas en charge la reconversion de la notation de diagnostic en format mémoire ou en flux CBOR, bien que la représentation soit unique et que cela soit techniquement possible.

La notation diagnostique CBOR est spécifiée par la section 6 de la RFC 7049. Il s'agit d'une représentation textuelle du flux CBOR, très similaire à JSON, mais qui prend en charge les types CBOR absents de JSON. Le format étendu activé par l'indicateur ` ExtendedFormat ` figure actuellement dans certains projets de l'IETF et son format est susceptible d'évoluer.

Cette fonction produit la représentation équivalente du flux que produirait ` toCbor()`, sans aucune option de transformation fournie dans ce cas. Cela implique également que cette fonction peut ne pas produire une représentation du flux qui a été utilisé pour créer l’objet, si celui-ci a été créé à l’aide de ` fromCbor()`, car cette fonction a pu appliquer des transformations. Pour une notation haute fidélité d’un flux, sans transformation, voir l’exemple « cbordump ».

Voir également toCbor() et QJsonDocument::toJson().

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

Renvoie la valeur à virgule flottante stockée dans cet objet ` QCborValue`, si celle-ci est de type `Double`. Si elle est de type `Integer`, cette fonction renvoie la valeur entière convertie en `Double`. Dans tous les autres cas, elle renvoie ` defaultValue`.

Voir également isDouble(), isInteger() et toInteger().

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

Renvoie la valeur entière stockée dans cet objet ` QCborValue`, si celui-ci est de type entier. S'il est de type `Double`, cette fonction renvoie la valeur à virgule flottante convertie en entier. Dans tous les autres cas, elle renvoie ` defaultValue`.

Voir également isInteger(), isDouble() et toDouble().

QJsonValue QCborValue::toJsonValue() const

Convertit cet objet ` QCborValue ` en une représentation équivalente au format JSON et le renvoie sous la forme d'un ` QJsonValue`.

Veuillez noter que le CBOR contient un ensemble de types plus riche et plus étendu que le JSON ; certaines informations peuvent donc être perdues lors de cette conversion. Le tableau suivant compare les types CBOR aux types JSON et indique si des informations sont susceptibles d'être perdues ou non.

Type CBORType JSONRemarques
BoolBoolAucune perte de données possible
DoubleNombreLes valeurs infinies et NaN seront converties en Null ; aucune perte de données pour les autres valeurs
EntierNombreUne perte de données est possible lors de la conversion si l’entier est supérieur à253 ou inférieur à-253.
NullNullAucune perte de données possible
Non définiNullInformations de type perdues
ChaîneChaîneAucune perte de données possible
Tableau d'octetsChaîneConverties en un encodage sans perte tel que Base64url, mais la distinction entre les chaînes de caractères et les tableaux d’octets est perdue
Autres types simplesChaîneInformations sur le type perdues
TableauTableauLa conversion s'applique à chaque valeur contenue
Table de correspondanceObjetLes clés sont converties en chaîne de caractères ; les valeurs sont converties selon ce tableau
Balises et types étendusSpécialLe numéro de balise est perdu et la valeur balisée est convertie au format JSON

Pour plus d’informations sur la conversion des clés de table CBOR en chaînes de caractères, consultez QCborMap::toJsonObject().

Si cet « QCborValue » contient la valeur « undefined », cette fonction renverra également un « QJsonValue » de type « undefined ». Notez que JSON ne prend pas en charge les valeurs « undefined » et que les QJsonValues de type « undefined » constituent une extension de la spécification. Elles ne peuvent pas être stockées dans une « QJsonArray » ou une « QJsonObject », mais peuvent être renvoyées par des fonctions pour signaler un échec. À toutes autres fins, elles sont équivalentes à « null ».

Traitement particulier des balises et des types étendus

Certaines balises font l’objet d’un traitement particulier et modifient la transformation de la valeur balisée de CBOR vers JSON. Le tableau suivant répertorie ces cas particuliers :

BaliseType CBORTransformation
ExpectedBase64urlTableau d’octetsEncode le tableau d'octets au format Base64url
ExpectedBase64Tableau d'octetsEncode le tableau d'octets au format Base64
ExpectedBase16Tableau d'octetsEncode le tableau d'octets au format hexadécimal
URLURL et chaîne de caractèresUtilise la fonction ` QUrl::toEncoded()` pour normaliser l'encodage au format entièrement encodé de l'URL
UuidUuid et tableau d'octetsUtilise la fonction ` QUuid::toString()` pour créer la représentation sous forme de chaîne

Voir également fromJsonValue(), toVariant(), QCborArray::toJsonArray() et QCborMap::toJsonObject().

QCborMap QCborValue::toMap() const

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

Renvoie la valeur de la carte stockée dans cet objet ` QCborValue`, si celui-ci est de type carte. Sinon, elle renvoie ` defaultValue`.

Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers QCborMap.

Voir également isMap(), isArray(), isContainer() et toArray().

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

Renvoie la valeur de l'expression régulière stockée dans cette variable ` QCborValue`, si celle-ci est de type « motif d'expression régulière étendu ». Sinon, elle renvoie ` defaultValue`.

Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers ` QRegularExpression`.

Voir également isRegularExpression(), isTag() et taggedValue().

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

Renvoie le type simple auquel appartient l'QCborValue, s'il s'agit d'un type simple. S'il ne s'agit pas d'un type simple, elle renvoie « defaultValue ».

Les types suivants sont des types simples et cette fonction renverra les valeurs indiquées :

Voir également type(), isSimpleType(), isBool(), isTrue(), isFalse(), isNull() et isUndefined().

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

Renvoie la valeur de type chaîne stockée dans cet objet ` QCborValue`, si celle-ci est de type chaîne. Sinon, elle renvoie ` defaultValue`.

Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers « QString ».

Voir également toStringView(), isString(), isByteArray() et toByteArray().

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

Renvoie la valeur de type chaîne stockée dans cet QCborValue, si celle-ci est de type chaîne. Sinon, elle renvoie defaultValue. Étant donné que QCborValue stocke les chaînes au format US-ASCII, UTF-8 ou UTF-16, la valeur QAnyStringView renvoyée peut être dans n'importe lequel de ces encodages.

Cette fonction n’alloue pas de mémoire. La valeur de retour est valide jusqu’au prochain appel d’une fonction membre non-const sur cet objet. Si cet objet sort de sa portée, la valeur de retour est valide jusqu’au prochain appel d’une fonction membre non-const sur l’objet CBOR parent (carte ou tableau).

Notez que cette fonction n’effectue aucune conversion depuis d’autres types vers l’ QString.

Cette fonction a été introduite dans Qt 6.10.

Voir également ` toString()`, ` isString()`, ` isByteArray()` et ` toByteArray()`.

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

Renvoie la valeur de l'URL stockée dans cet objet ` QCborValue`, si celui-ci est de type « URL étendu ». Sinon, elle renvoie ` defaultValue`.

Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers ` QUrl`.

Voir également isUrl(), isTag() et taggedValue().

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

Renvoie la valeur UUID stockée dans cet objet ` QCborValue`, s'il s'agit d'un type UUID étendu. Sinon, elle renvoie ` defaultValue`.

Notez que cette fonction n'effectue aucune conversion depuis d'autres types vers ` QUuid`.

Voir également isUuid(), isTag() et taggedValue().

QVariant QCborValue::toVariant() const

Convertit cette valeur en un type natif Qt et renvoie l'QVariant correspondant.

Le tableau suivant répertorie les correspondances établies entre QCborValue types et Qt meta types.

Type CBORType Qt ou C++Remarques
Entierqint64
Doubledouble
Boolbool
Nullstd::nullptr_t
Non définisans type (QVariant())
Tableau d'octetsQByteArray
ChaîneQString
TableauQVariantListConvertit toutes les valeurs de manière récursive
Table de correspondanceQVariantMapLes types de clés sont « convertis en chaînes de caractères »
Autres types simplesQCborSimpleType
DateTimeQDateTime
URLQUrl
RegularExpressionQRegularExpression
UuidQUuid
Autres balisesSpécialLa balise est ignorée et la valeur balisée est convertie à l'aide de cette fonction

Notez que les valeurs contenues dans les tables de correspondance CBOR et les tableaux sont également converties de manière récursive à l’aide de cette fonction, puis placées respectivement dans QVariantMap et QVariantList. Vous ne trouverez pas QCborMap ni QCborArray stockés à l’intérieur des QVariants.

Les QVariantMaps possèdent des clés de type chaîne de caractères, contrairement au CBOR ; la conversion d’une QCborMap en QVariantMap implique donc une étape de « conversion en chaîne » des valeurs des clés. Voir QCborMap::toJsonObject() pour plus de détails.

Voir également fromVariant(), toJsonValue(), QCborArray::toVariantList() et QCborMap::toVariantMap().

QCborValue::Type QCborValue::type() const

Renvoie le type de cet objet QCborValue. Ce type peut également être récupéré ultérieurement à l'aide de l'une des fonctions « isXxx ».

Voir également isInteger(), isByteArray(), isString(), isArray(), isMap(), isTag(), isFalse(), isTrue(), isBool(), isNull(), isUndefined, isDouble(), isDateTime(), isUrl(), isRegularExpression() et isUuid().

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

Remplace le contenu de cet objet QCborObject par une copie de other.

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

Déplace le contenu de l'objet other QCborValue vers celui-ci et libère les ressources de ce dernier. Renvoie une référence à cet objet.

Il s'agit d'une fonction surchargée.

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

Renvoie une référence de type `QCborValueRef` pouvant être utilisée pour lire ou modifier l’entrée de cette structure (considérée comme une carte) à l’aide de l’ key donné. Lorsque cet QCborValue est de type ` QCborMap`, cette fonction équivaut à l’opérateur `[]` correspondant sur cette carte.

Avant de renvoyer la référence : si cet QCborValue était un tableau, il est d’abord converti en carte (de sorte que map[i] soit array[i] pour chaque index, i, avec des array[i] valides) ; sinon, s’il ne s’agissait pas d’une carte, il sera remplacé par une carte vide.

Voir également operator[](qint64), QCborMap::operator[], QCborMap::value() et QCborMap::find().

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

Si cet objet QCborValue est un QCborMap, cette fonction recherche dans les éléments la valeur dont la clé correspond à key. S'il n'existe aucune clé correspondant à key dans la carte ou si cet objet QCborValue n'est pas une carte, la fonction renvoie la valeur « undefined ».

Cette fonction est équivalente à :

value.toMap().value(key);

Voir également operator[](qint64), QCborMap::operator[], QCborMap::value() et QCborMap::find().

QCborValueRef QCborValue::operator[](QLatin1StringView key)

Renvoie une référence de type `QCborValueRef` pouvant être utilisée pour lire ou modifier l’entrée de cette structure (considérée comme une carte) à l’aide de l’ key donné. Lorsque cet QCborValue est un QCborMap, cette fonction équivaut à l’opérateur [] correspondant sur cette carte.

Avant de renvoyer la référence : si cet QCborValue était un tableau, il est d’abord converti en carte (de sorte que map[i] soit array[i] pour chaque index, i, avec des array[i] valides) ; sinon, s’il ne s’agissait pas d’une carte, il sera remplacé par une carte vide.

Il s’agit d’une fonction surchargée.

Voir également operator[](qint64), QCborMap::operator[], QCborMap::value() et QCborMap::find().

QCborValueRef QCborValue::operator[](qint64 key)

Renvoie une référence `QCborValueRef` pouvant être utilisée pour lire ou modifier l’entrée de cet objet (sous forme de carte ou de tableau) à l’aide de l’ key fournie. Lorsque cette QCborValue est une QCborMap ou, pour 0 <= key < 0x10000, une QCborArray, cette fonction équivaut à l’opérateur `[]` correspondant sur cette carte ou ce tableau.

Avant de renvoyer la référence : si cet QCborValue était un tableau mais que la clé est hors de la plage autorisée, le tableau est d’abord converti en carte (de sorte que map[i] soit array[i] pour chaque index, i, avec une array[i] valide) ; sinon, s’il ne s’agissait pas d’une carte, il sera remplacé par une carte vide.

Il s’agit d’une fonction surchargée.

Voir également operator[], QCborMap::operator[], QCborMap::value(), QCborMap::find(), QCborArray::operator[] et QCborArray::at().

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

Si cet objet QCborValue est une carte QCborMap, cette fonction recherche dans les éléments de la carte la valeur dont la clé correspond à key. S’il n’y a pas de clé correspondant à key dans la carte ou si cet objet QCborValue n’est pas une carte, la fonction renvoie la valeur « undefined ».

Cette fonction est équivalente à :

value.toMap().value(key);

Il s'agit d'une fonction surchargée.

Voir également operator[](qint64), QCborMap::operator[], QCborMap::value() et QCborMap::find().

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

Si cet objet QCborValue est un QCborMap, la fonction recherche dans les éléments la valeur dont la clé correspond à key. S'il s'agit d'un QCborArray, elle renvoie l'élément dont l'index est key. S'il n'y a pas de valeur correspondante dans le tableau ou la carte, ou si cet objet QCborValue n'est ni un tableau ni une carte, elle renvoie la valeur « undefined ».

Il s’agit d’une fonction surchargée.

Voir également operator[], QCborMap::operator[], QCborMap::value(), QCborMap::find(), QCborArray::operator[] et QCborArray::at().

Liens connexes pour les non-membres

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

Compare lhs et rhs, et renvoie « true » si leur contenu diffère, « false » dans le cas contraire. Si chaque QCborValue contient un tableau ou une carte, la comparaison s’effectue de manière récursive sur les éléments qu’ils contiennent.

Pour plus d’informations sur l’égalité CBOR dans Qt, voir QCborValue::compare().

Voir également compare(), QCborMap::operator==(), operator==() et operator<().

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

Compare lhs et rhs, et renvoie « true » si lhs doit être trié avant rhs, « false » dans le cas contraire. Si chaque QCborValue contient un tableau ou une carte, la comparaison s'effectue de manière récursive sur les éléments qu'ils contiennent.

Pour plus d’informations sur l’ordre de tri CBOR, voir QCborValue::compare().

Voir également compare(), QCborValue::operator==(), QCborMap::operator==(), operator==() et operator!=().

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

Compare lhs et rhs, et renvoie « true » si lhs doit être trié avant rhs ou s’il est égal à rhs, « false » dans le cas contraire. Si chaque QCborValue contient un tableau ou une carte, la comparaison s’effectue de manière récursive sur les éléments qu’ils contiennent.

Pour plus d’informations sur l’ordre de tri CBOR, voir QCborValue::compare().

Voir également compare(), QCborValue::operator<(), QCborMap::operator==(), operator==() et operator!=().

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

Compare lhs et rhs, et renvoie « true » si leur contenu est identique, « false » dans le cas contraire. Si chaque QCborValue contient un tableau ou une carte, la comparaison s’effectue de manière récursive sur les éléments qu’ils contiennent.

Pour plus d’informations sur l’égalité CBOR dans Qt, voir compare().

Voir également compare(), QCborMap::operator==(), operator!=() et operator<().

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

Compare lhs et rhs, et renvoie « true » si lhs doit être classé après rhs, « false » dans le cas contraire. Si chaque QCborValue contient un tableau ou une carte, la comparaison s'effectue de manière récursive sur les éléments qu'ils contiennent.

Pour plus d’informations sur l’ordre de tri CBOR, voir QCborValue::compare().

Voir également compare(), QCborValue::operator>=(), QCborMap::operator==(), operator==() et operator!=().

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

Compare lhs et rhs, et renvoie « true » si lhs doit être classé après rhs ou s'il est égal à rhs, « false » dans le cas contraire. Si chaque QCborValue contient un tableau ou une carte, la comparaison s'effectue de manière récursive sur les éléments qu'ils contiennent.

Pour plus d’informations sur l’ordre de tri CBOR, voir QCborValue::compare().

Voir également compare(), QCborValue::operator>(), QCborMap::operator==(), operator==() et 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.