QCborValue Class
La classe QCborValue encapsule une valeur dans CBOR. Plus d'informations...
| En-tête : | #include <QCborValue> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
- Liste de tous les membres, y compris les membres hérités
- QCborValue fait partie du support CBOR dans Qt.
Cette classe est fortement comparable.
Note : Toutes les fonctions de cette classe sont réentrantes.
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(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) |
Non-membres apparentés
| 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 est la Concise Binary Object Representation, une forme très compacte d'encodage de données binaires qui est un surensemble 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é parallèlement au protocole CoAP.
CBOR comporte trois groupes de types intégrés :
- Types de base : entiers, virgule flottante (double), booléens, null, etc.
- Types de type chaîne : chaînes de caractères et tableaux d'octets
- Conteneurs : tableaux et cartes
En outre, CBOR prend en charge une forme d'extensibilité des types en associant une "balise" à l'un des types susmentionnés pour 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 supporte la création et le décodage de plusieurs de ces types étendus directement avec les classes Qt (comme QUuid).
Pour la liste complète, voir QCborValue::Type. Le type d'une QCborValue peut être interrogé en utilisant type() ou l'une des fonctions "isXxxx".
Types étendus et tagged values
Une valeur étiquetée est une QCborValue normale qui est associée à un nombre qui est son étiquette. Voir QCborKnownTags pour plus d'informations sur les balises présentes dans l'API ainsi que la liste complète et officielle. De telles 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). D'autres types étendus non pris en charge par l'API sont représentés par un QCborValue de type Tag. L'étiquette peut ensuite être récupérée par tag() et la valeur étiquetée par taggedValue().
Afin d'assurer la compatibilité future, les QCborValues contenant des types Qt étendus sont comparées au type de balise du 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'est d'aucun type spécifique. Elle ressemble au type C++ std::nullptr_t, dont la seule valeur possible est nullptr. QCborValue possède un constructeur qui prend un tel type et crée une QCborValue nulle.
Les valeurs nulles sont utilisées pour indiquer qu'une valeur optionnelle n'est pas présente. Dans cet aspect, il est similaire au type std::optional de la bibliothèque standard C++ lorsqu'il est désengagé. Contrairement au type C++, les valeurs nulles CBOR sont simplement de type "Null" et il n'est pas possible de déterminer le type concret qu'elles remplacent.
QCborValue peut également être du type undefined, qui représente une valeur "undefined". C'est d'ailleurs ce que crée le constructeur par défaut de QCborValue.
Les valeurs non définies sont différentes des valeurs nulles. Alors que les valeurs nulles sont utilisées pour indiquer une valeur optionnelle qui n'est pas fournie, Undefined est généralement utilisé pour indiquer qu'une valeur attendue n'a pas pu être fournie, généralement en raison d'une erreur ou d'une condition préalable qui n'a pas pu être satisfaite.
Ces valeurs sont tout à fait valables et peuvent apparaître dans les flux CBOR, contrairement au contenu JSON et au bit Undefined de QJsonValue. Mais comme le bit Undefined de QJsonValue, il est renvoyé par value() ou par l'opérateur read-only[] d'un conteneur CBOR pour les consultations non valides (index hors de la plage pour QCborArray, ou clé non trouvée pour QCborMap). Il n'est pas possible de distinguer un tel cas de la valeur Undefined, donc si cela est nécessaire, vérifiez la taille de QCborArray et utilisez l'API de l'itérateur QCborMap.
Types simples
CBOR supporte des types simples supplémentaires qui, comme Null et Undefined, ne portent aucune autre valeur. Ils sont appelés indifféremment "types simples" et "valeurs simples". CBOR code les booléens comme deux types distincts (un pour true et un pour false), mais QCborValue a une API de commodité pour eux.
Il n'y a actuellement aucun autre type simple CBOR défini. QCborValue les supporte simplement par leur nombre avec des API comme isSimpleType() et toSimpleType(), disponibles pour la compatibilité avec les spécifications futures avant que l'API de Qt ne puisse être mise à jour. Leur utilisation avant une telle spécification est déconseillée, car d'autres implémentations CBOR peuvent ne pas les supporter complètement.
Support CBOR
QCborValue supporte toutes les fonctionnalités CBOR requises pour créer des flux canoniques et stricts. Il implémente presque toutes les fonctionnalités spécifiées dans la RFC 7049.
Le tableau suivant liste les fonctionnalités CBOR supportées par QCborValue.
| Fonctionnalité | Support |
|---|---|
| Nombres non signés | Oui (qint64 range) |
| Nombres négatifs | Oui (qint64 range) |
| Chaînes d'octets | Oui |
| Chaînes de texte | Oui |
| Chaînes groupées | Voir ci-dessous |
| Étiquettes | Oui (arbitraire) |
| Booléens | Oui |
| Nul | Oui |
| Indéfini | Oui |
| Valeurs simples arbitraires | Oui |
| Flottant de demi-précision (16 bits) | Oui |
| Flotteur simple précision (32 bits) | Oui |
| Flottant double précision (64 bits) | Oui |
| Infinités et NaN en virgule flottante | Oui |
| Tableaux et cartes de longueur déterminée | Oui |
| Tableaux et cartes de longueur indéterminée | Oui |
| Types de clés de cartes autres que les chaînes de caractères et les entiers | Oui (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). 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 utilisant fromCbor() contenant l'une de ces valeurs, QCborValue convertira automatiquement en Double, mais cela peut faire perdre jusqu'à 11 bits de précision.
fromCbor() est capable de décoder des chaînes fragmentées, mais fusionnera toujours les morceaux en une seule QCborValue. Pour cette raison, il écrit toujours des chaînes non fractionnées lorsqu'il utilise toCbor() (ce qui est de toute façon requis par le format canonique).
QCborValue convertira toujours en double précision les valeurs à virgule flottante en simple et demi-précision dans le flux CBOR. 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 mutation de ces classes. Contrairement à QCborValue, de nouvelles valeurs peuvent être assignées à cette classe. Lorsque cela est fait, le tableau ou la carte auquel il se réfère sera modifié avec la nouvelle valeur. Pour le reste, son API est identique à celle de QCborValue.
Voir aussi QCborArray, QCborMap, QCborStreamReader, QCborStreamWriter, QJsonValue, QJsonDocument, Serialization Converter, et Parsing and displaying CBOR data.
Documentation des types de membres
enum QCborValue::DiagnosticNotationOption
flags QCborValue::DiagnosticNotationOptions
Cette énumération est utilisée dans l'argument d'option de toDiagnosticNotation(), pour modifier le format de sortie.
| Constante | Valeur | Description |
|---|---|---|
QCborValue::Compact | 0x00 | N'utilise pas de saut de ligne, ce qui produit une représentation compacte. |
QCborValue::LineWrapped | 0x01 | Utilise des sauts de ligne, un QCborValue par ligne. |
QCborValue::ExtendedFormat | 0x02 | Utilise des options différentes pour représenter les valeurs, que l'on ne trouve pas dans la RFC 7049. Ces options sont susceptibles d'être modifiées. |
Actuellement, ExtendedFormat modifie la représentation des tableaux d'octets. Sans cette option, ils sont toujours codés en hexadécimal et sans espace. Avec, QCborValue::toCbor() utilisera soit l'hexagone avec les espaces, soit l'encodage base64 ou base64url, en fonction du contexte.
Le type DiagnosticNotationOptions est un typedef pour QFlags<DiagnosticNotationOption>. Il stocke une combinaison OU de valeurs DiagnosticNotationOption.
Voir également toDiagnosticNotation().
enum QCborValue::EncodingOption
flags QCborValue::EncodingOptions
Cette énumération est utilisée dans l'argument des options de toCbor(), modifiant le comportement de l'encodeur.
| Constante | Valeur | Description |
|---|---|---|
QCborValue::NoTransformation | 0 | (Par défaut) N'effectue aucune transformation. |
QCborValue::UseFloat | 0x02 | Indique au codeur d'utiliser la virgule flottante IEEE 754 en simple précision (c'est-à-dire float) dans la mesure du possible. |
QCborValue::UseFloat16 | UseFloat | 0x04 | Indique au codeur d'utiliser la virgule flottante IEEE 754 en demi-précision (c'est-à-dire qfloat16), dans la mesure du possible. Implique UseFloat. |
QCborValue::UseIntegers | 0x08 | Indique au codeur d'utiliser des entiers chaque fois qu'une valeur de type Double contient un entier. |
L'utilisation de UseFloat16 est nécessaire pour encoder le flux en format canonique, mais n'est pas nécessaire par ailleurs.
Le type EncodingOptions est un typedef pour 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 CBOR sont les suivants :
| Constante | Valeur | Description |
|---|---|---|
QCborValue::Integer | 0x00 | qint64: une valeur entière |
QCborValue::ByteArray | 0x40 | QByteArrayun tableau d'octets ("byte string") |
QCborValue::String | 0x60 | QStringune chaîne Unicode ("text string") |
QCborValue::Array | 0x80 | QCborArrayun tableau de QCborValues |
QCborValue::Map | 0xa0 | QCborMap: un conteneur associatif de QCborValues |
QCborValue::SimpleType | 0x100 | QCborSimpleTypeun type simple parmi plusieurs types/valeurs |
QCborValue::False | SimpleType + int(QCborSimpleType::False) | bool: le type simple de la valeur false |
QCborValue::True | SimpleType + int(QCborSimpleType::True) | bool: le type simple pour la valeur true |
QCborValue::Null | SimpleType + int(QCborSimpleType::Null) | std::nullptr_tle type simple pour la valeur null |
QCborValue::Undefined | SimpleType + int(QCborSimpleType::Undefined) | (pas de type) le type simple pour la valeur indéfinie |
QCborValue::Double | 0x202 | doubleune virgule flottante en double précision |
QCborValue::Invalid | -1 | Valeur non valide, ce qui indique généralement une erreur de décodage CBOR. |
En outre, QCborValue peut représenter des types étendus :
| Constante | Valeur | Description |
|---|---|---|
QCborValue::Tag | 0xc0 | Un type étendu inconnu ou non reconnu, représenté par sa balise (a QCborTag) et la valeur balisée (a QCborValue). |
QCborValue::DateTime | 0x10000 | QDateTimeune date et une heure |
QCborValue::Url | 0x10020 | QUrlUne URL ou un URI |
QCborValue::RegularExpression | 0x10023 | QRegularExpressionun URL ou un URI : le motif d'une expression régulière |
QCborValue::Uuid | 0x10025 | QUuidun UUID |
Voir aussi type().
Documentation des fonctions membres
QCborValue::QCborValue()
Crée une QCborValue du type Undefined.
Les valeurs CBOR non définies sont utilisées pour indiquer des informations manquantes, généralement à la suite d'une opération précédente qui ne s'est pas terminé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 non définies sont représentées par Undefined simple type. Pour cette raison, les QCborValues avec des valeurs non définies renverront également true pour isSimpleType() et isSimpleType(QCborSimpleType::Undefined).
Les valeurs non définies sont différentes des valeurs nulles.
Les objets QCborValue avec des valeurs non définies sont également différents des objets QCborValue invalides. L'API ne crée pas de QCborValues non valides, mais elles peuvent exister à la suite d'une erreur d'analyse.
Voir également isUndefined(), isNull() et isSimpleType().
QCborValue::QCborValue(QCborSimpleType st)
Crée une QCborValue de type simple st. Le type peut être récupéré ultérieurement en utilisant toSimpleType() ainsi que isSimpleType(st).
Les types simples CBOR sont des types qui n'ont pas de valeur associée, comme le type std::nullptr_t de C++, dont la seule valeur possible est nullptr.
Si st est QCborSimpleType::Null, la QCborValue résultante sera du type Null et de même pour QCborSimpleType::Undefined. Si st est QCborSimpleType::False ou QCborSimpleType::True, la QCborValue créée sera un booléen contenant une valeur de false ou de true, respectivement.
Cette fonction peut être utilisée avec des types simples non définis dans l'API. Par exemple, pour créer une QCborValue avec le type simple 12, on pourrait écrire :
QCborValue value(QCborSimpleType(12));
Les types simples ne doivent pas être utilisés tant qu'une spécification n'a pas été publiée à leur sujet, car d'autres implémentations peuvent ne pas les prendre en charge correctement. Les valeurs de type simple 24 à 31 sont réservées et ne doivent pas être utilisées.
isSimpleType(), isNull(), isUndefined(), isTrue(), isFalse()
QCborValue::QCborValue(QCborValue::Type t_)
Crée une QCborValue de type t_. La valeur associée à ce type (s'il y en a une) sera construite par défaut.
Voir aussi type().
QCborValue::QCborValue(QStringView s)
Crée un QCborValue avec une valeur de chaîne s. La valeur peut être récupérée ultérieurement en utilisant toString().
Voir aussi toString(), isString(), et isByteArray().
QCborValue::QCborValue(bool b)
Crée un QCborValue avec la valeur booléenne b. La valeur peut ensuite être récupérée à l'aide de toBool().
En interne, les booléens CBOR sont représentés par une paire de types, un pour true et un pour false. C'est pourquoi les booléens QCborValues renverront true pour isSimpleType() et l'un des types isSimpleType(QCborSimpleType::False) ou isSimpleType(QCborSimpleType::True).
Voir aussi toBool(), isBool(), isTrue(), isFalse() et isSimpleType().
QCborValue::QCborValue(const QByteArray &ba)
Crée un QCborValue avec une valeur de tableau d'octets ba. La valeur peut être récupérée ultérieurement en utilisant toByteArray().
Voir aussi toByteArray(), isByteArray(), et isString().
QCborValue::QCborValue(const QCborArray &a)
QCborValue::QCborValue(QCborArray &&a)
Crée un QCborValue avec le tableau a. Le tableau peut être récupéré ultérieurement à l'aide de toArray().
Voir aussi toArray(), isArray() et isMap().
Crée un QCborValue avec la carte m. La carte peut être récupérée ultérieurement à l'aide de toMap().
Voir aussi toMap(), isMap() et isArray().
[explicit] QCborValue::QCborValue(const QDateTime &dt)
Crée un objet QCborValue du type date/heure étendu et contenant la valeur représentée par dt. La valeur peut être récupérée ultérieurement à l'aide de toDateTime().
Les types date/heure CBOR sont des types d'extension utilisant des balises : soit une chaîne (au format date ISO) étiquetée comme DateTime, soit un nombre (de secondes depuis le début de 1970, UTC) étiqueté comme UnixTime_t. Lors de l'analyse des flux CBOR, QCborValue convertira UnixTime_t en type basé sur une chaîne de caractères.
Voir aussi toDateTime(), isDateTime(), et taggedValue().
[explicit] QCborValue::QCborValue(const QRegularExpression &rx)
Crée un objet QCborValue du type étendu "regular expression pattern" et contenant la valeur représentée par rx. La valeur peut être récupérée ultérieurement en utilisant toRegularExpression().
Le type d'expression régulière CBOR est un type étendu représenté par une chaîne de caractères étiquetée comme RegularExpression. Notez que les expressions régulières CBOR ne stockent que les motifs, de sorte que tous les drapeaux que l'objet QRegularExpression peut porter seront perdus.
Voir aussi toRegularExpression(), isRegularExpression() et taggedValue().
QCborValue::QCborValue(const QString &s)
Crée un QCborValue avec une valeur de chaîne s. La valeur peut être récupérée ultérieurement en utilisant toString().
Voir aussi toString(), isString(), et isByteArray().
[explicit] QCborValue::QCborValue(const QUrl &url)
Crée un objet QCborValue du type URL étendu et contenant la valeur représentée par url. La valeur peut être récupérée ultérieurement à l'aide de toUrl().
Le type URL CBOR est un type étendu représenté par une chaîne de caractères étiquetée comme Url.
Voir aussi 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. La valeur peut être récupérée ultérieurement à l'aide de toUuid().
Le type CBOR UUID est un type étendu représenté par un tableau d'octets étiqueté comme Uuid.
Voir également toUuid(), isUuid() et taggedValue().
QCborValue::QCborValue(double d)
Crée un QCborValue avec une valeur en virgule flottante d. La valeur peut être récupérée ultérieurement à l'aide de toDouble().
Les valeurs CBOR à virgule flottante sont distinctes des valeurs entières. Par conséquent, les objets QCborValue contenant des entiers seront comparés différemment des objets QCborValue contenant des valeurs à virgule flottante, même si les valeurs contenues dans les objets sont équivalentes.
Voir également toDouble(), isDouble() et isInteger().
QCborValue::QCborValue(qint64 i)
Crée un QCborValue avec une valeur entière i. La valeur peut être récupérée ultérieurement à l'aide de toInteger().
Les valeurs entières CBOR sont distinctes des valeurs à virgule flottante. Par conséquent, les objets QCborValue contenant des entiers seront comparés différemment des objets QCborValue contenant des valeurs à virgule flottante, même si les valeurs contenues dans les objets sont équivalentes.
Voir également toInteger(), isInteger() et isDouble().
QCborValue::QCborValue(std::nullptr_t)
Crée une QCborValue du type Null.
Les valeurs nulles CBOR sont utilisées pour indiquer les valeurs optionnelles qui n'ont pas été fournies. Elles se distinguent des valeurs non définies, dans la mesure où les valeurs nulles ne sont généralement pas le résultat d'une erreur ou d'un problème antérieur.
Voir également isNull(), isUndefined() et isSimpleType().
QCborValue::QCborValue(QCborTag tag, const QCborValue &tv = QCborValue())
QCborValue::QCborValue(QCborKnownTags tag, const QCborValue &tv = QCborValue())
Crée un QCborValue pour le type étendu représenté par la valeur de balise tag, la valeur de balise tv. La balise peut être récupérée ultérieurement à l'aide de tag() et la valeur balisée à l'aide de taggedValue().
Voir aussi isTag(), tag(), taggedValue() et QCborKnownTags.
QCborValue::QCborValue(QLatin1StringView s)
Crée un QCborValue avec la chaîne Latin-1 visualisée par s. La valeur peut être récupérée ultérieurement en utilisant toString().
Il s'agit d'une fonction surchargée.
Voir aussi toString(), isString(), et isByteArray().
[noexcept] QCborValue::QCborValue(const QCborValue &other)
Copie le contenu de other dans cet objet.
[noexcept] QCborValue::QCborValue(QCborValue &&other)
Déplace le contenu de l'objet other QCborValue dans celui-ci et libère les ressources de celui-ci.
Il s'agit d'une fonction surchargée.
[noexcept] QCborValue::~QCborValue()
Se débarrasse de l'objet QCborValue actuel et libère toutes les ressources associées.
int QCborValue::compare(const QCborValue &other) const
Compare cette valeur et other, et renvoie un entier qui indique 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 est récursive pour les éléments qu'ils contiennent.
Types étendus
QCborValue compare à égalité un QCborValue contenant un type étendu, comme 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 que les types Qt XML comme QUrl et QDateTime normalisent et modifient leurs arguments. L'expression ci-dessus n'est vraie que parce que la chaîne de caractères à droite est la valeur normalisée que prendrait le QCborValue à 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 du 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 carte lorsque l'on suit l'encodage canonique. Selon la spécification, "le tri est effectué sur les octets de la représentation des éléments de données clés" et énumère 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 qui a la valeur la plus faible dans l'ordre lexical (par octets) est triée en premier.
Il en résulte un tri surprenant des QCborValues, où le résultat de cette fonction est différent de celui que l'on obtiendrait plus tard en comparant les éléments contenus. Par exemple, l'élément QCborValue contenant la chaîne "zzz" est trié avant l'élément QCborValue contenant la chaîne "foobar", même si, lors de la comparaison en tant que QStrings ou QByteArrays, l'élément "zzz" est trié après l'élément "foobar" (ordre du dictionnaire).
La spécification n'indique pas clairement l'ordre de tri à respecter pour les valeurs de différents types (elle indique que le tri ne doit pas tenir compte du découpage en 3/5 bits pour les principaux types). 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 à leurs équivalents étiquetés.
Remarque : l'ordre de tri est préliminaire et peut être modifié. Les applications ne doivent pas dépendre de l'ordre retourné par cette fonction pour le moment.
Voir aussi QCborArray::compare(), QCborMap::compare() et operator==().
[static] QCborValue QCborValue::fromCbor(QCborStreamReader &reader)
Décode un élément du flux CBOR trouvé 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 trouvés dans cette carte ou ce tableau, jusqu'à ce que l'objet le plus externe soit terminé.
Il n'est pas nécessaire d'utiliser cette fonction sur l'élément racine d'un QCborStreamReader. Par exemple, le code suivant illustre 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 indiscernable d'une QCborValue valide, même si le décodage a échoué. Pour déterminer s'il y a eu une erreur, vérifiez si reader.lastError() indique une condition d'erreur. Cette fonction arrête le décodage immédiatement après la première erreur.
Voir aussi toCbor(), toDiagnosticNotation(), toVariant() et toJsonValue().
[static] QCborValue QCborValue::fromCbor(const QByteArray &ba, QCborParserError *error = nullptr)
Décode un élément du flux CBOR trouvé 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 trouvés dans cette carte ou ce tableau, jusqu'à ce que l'objet le plus externe soit terminé.
Cette fonction stocke l'état de l'erreur, le cas échéant, dans l'objet pointé par error, ainsi que le décalage de l'endroit où l'erreur s'est produite. Si aucune erreur ne s'est produite, elle stocke NoError dans l'état d'erreur et le nombre d'octets qu'elle a consommés (c'est-à-dire qu'elle stocke le décalage du premier octet inutilisé). L'utilisation de ces informations permet d'analyser d'autres données qui peuvent exister dans le même tableau d'octets.
La valeur renvoyée peut être partiellement complète et ne pas être distinguée d'une 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é stockée dans error. Cette fonction arrête le décodage immédiatement après la première erreur.
Il s'agit d'une fonction surchargée.
Voir aussi 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 QByteArray et appelle ensuite la surcharge de cette fonction qui accepte QByteArray, en passant également error, le cas échéant.
[static] QCborValue QCborValue::fromJsonValue(const QJsonValue &v)
Convertit la valeur JSON contenue dans v en sa valeur CBOR correspondante et la renvoie. Il n'y a pas de perte de données lors de la conversion de JSON en CBOR, car le jeu de types CBOR est plus riche que celui de JSON. En outre, les valeurs converties en CBOR à l'aide de cette fonction peuvent être reconverties en JSON à l'aide de toJsonValue() sans perte de données.
Le tableau suivant répertorie les correspondances entre les types JSON et les types CBOR :
| Type JSON | Type CBOR |
|---|---|
| Bool | Bool |
| Nombre | Entier (si le nombre n'a pas de fraction et se situe dans la plage qint64 ) ou Double |
| Chaîne | Chaîne |
| Tableau | Tableau |
| Objet | Carte |
| Nul | Nul |
QJsonValue peut également être indéfinie, ce qui indique que l'opération précédente n'a pas abouti (par exemple, la recherche d'une clé non présente dans un objet). Les valeurs non dé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 non définie QCborValue si la valeur correspondante QJsonValue est non définie.
Voir également toJsonValue(), fromVariant(), QCborArray::fromJsonArray() et QCborMap::fromJsonObject().
[static] QCborValue QCborValue::fromVariant(const QVariant &variant)
Convertit le site 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 dans 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 conseillé d'encoder soigneusement chaque valeur afin d'éviter toute perte de représentation.
Le tableau suivant énumère les conversions que cette fonction appliquera :
| Type Qt (C++) | Type CBOR |
|---|---|
| invalide (QVariant()) | Indéfini |
bool | Bool |
std::nullptr_t | Nul |
short, ushort, int, uint, qint64 | Entier |
| quint64 | Entier, ou Double si en dehors de la plage de qint64 |
float, double | Double |
| QByteArray | ByteArray |
| QDateTime | DateTime |
| QCborSimpleType | Type simple |
| QJsonArray | Tableau, converti en utilisant QCborArray::formJsonArray() |
| QJsonDocument | Tableau ou carte |
| QJsonObject | Map, converti en utilisant QCborMap::fromJsonObject() |
| QJsonValue | converti en utilisant fromJsonValue() |
| QRegularExpression | RegularExpression |
| QString | Chaîne |
| QStringList | Tableau |
| QVariantHash | Carte |
| QVariantList | Tableau |
| QVariantMap | Carte |
| QUrl | Url |
| QUuid | Uuid |
Si QVariant::isNull() renvoie vrai, un QCborValue nul est renvoyé ou inséré 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 listés ci-dessus, une conversion en chaîne de caractères sera tentée, généralement mais pas toujours en appelant QVariant::toString(). Si la conversion échoue, la valeur est remplacée par une valeur CBOR non définie. Notez que QVariant::toString() est également déficitaire pour la majorité des types.
Veuillez noter que les conversions via QVariant::toString() peuvent être modifiées à tout moment. QVariant et QCborValue peuvent être étendus à 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 aussi toVariant(), fromJsonValue(), QCborArray::toVariantList(), QCborMap::toVariantMap() et QJsonValue::fromVariant().
bool QCborValue::isArray() const
Retourne vrai si cette QCborValue est de type tableau. La valeur du tableau peut être récupérée à l'aide de toArray().
Voir aussi type() et toArray().
bool QCborValue::isBool() const
Retourne vrai si cette QCborValue est un booléen. La valeur peut être récupérée à l'aide de toBool().
Voir aussi type(), toBool(), isTrue() et isFalse().
bool QCborValue::isByteArray() const
Retourne vrai si cette QCborValue est de type tableau d'octets. La valeur du tableau d'octets peut être récupérée en utilisant toByteArray().
Voir aussi type() et toByteArray().
bool QCborValue::isContainer() const
Cette fonction de commodité renvoie un message vrai si QCborValue est un tableau ou une carte.
Voir aussi isArray() et isMap().
bool QCborValue::isDateTime() const
Retourne true si cette QCborValue est de type date/heure. La valeur peut être récupérée à l'aide de toDateTime(). Les dates/heures sont des types étendus qui utilisent la balise DateTime.
De plus, lors du décodage à partir d'un flux CBOR, QCborValue interprétera les balises de valeur UnixTime_t et les convertira en date/heure équivalente.
Voir aussi type() et toDateTime().
bool QCborValue::isDouble() const
Retourne vrai si cette QCborValue est de type virgule flottante. La valeur peut être récupérée à l'aide de toDouble().
Voir aussi type() et toDouble().
bool QCborValue::isFalse() const
Retourne vrai si ce QCborValue est un booléen avec une valeur fausse. Cette fonction existe parce qu'en interne, les booléens CBOR sont stockés comme deux types distincts, un pour vrai et un pour faux.
Voir aussi type(), isBool(), isTrue() et toBool().
bool QCborValue::isInteger() const
Retourne vrai si cette QCborValue est de type entier. La valeur entière peut être récupérée à l'aide de toInteger().
Voir aussi type() et toInteger().
bool QCborValue::isInvalid() const
Retourne true si cette QCborValue n'est pas d'un type valide. Les QCborValues invalides sont distinctes de celles dont les valeurs sont indéfinies et représentent généralement une erreur de décodage.
Voir aussi isUndefined() et isNull().
bool QCborValue::isMap() const
Retourne true si cette QCborValue est de type map. La valeur de la carte peut être récupérée à l'aide de toMap().
bool QCborValue::isNull() const
Retourne true si cette QCborValue est de type null.
Les valeurs null de CBOR sont utilisées pour indiquer les valeurs optionnelles qui n'ont pas été fournies. Elles se distinguent des valeurs non définies, dans la mesure où les valeurs nulles ne sont généralement pas le résultat d'une erreur ou d'un problème antérieur.
Les valeurs nulles sont distinctes des valeurs non définies et des objets QCborValue non valides. L'API ne crée pas de QCborValues non valides, mais elles peuvent exister à la suite d'une erreur d'analyse.
Voir également type(), isUndefined() et isInvalid().
bool QCborValue::isRegularExpression() const
Retourne vrai si cette QCborValue contient le motif d'une expression régulière. Le motif peut être récupéré à l'aide de toRegularExpression().
Voir aussi type() et toRegularExpression().
bool QCborValue::isSimpleType() const
Retourne vrai si ce QCborValue appartient à l'un des types simples CBOR. Le type lui-même peut être récupéré ultérieurement en utilisant type(), même pour les types qui n'ont pas d'énumération dans l'API. Ils peuvent également être vérifiés avec la surcharge isSimpleType(QCborSimpleType).
Voir aussi QCborSimpleType, isSimpleType(QCborSimpleType), et toSimpleType().
bool QCborValue::isSimpleType(QCborSimpleType st) const
Retourne true si ce QCborValue est d'un type simple et que toSimpleType() renverrait st, false dans le cas contraire. Cette fonction peut être utilisée pour vérifier tout 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 la valeur 12, vous pourriez écrire :
value.isSimpleType(QCborSimpleType(12));
Ceci est une fonction surchargée.
Voir aussi QCborValue::QCborValue(QCborSimpleType), isSimpleType(), isFalse(), isTrue(), isNull, isUndefined() et toSimpleType().
bool QCborValue::isString() const
Renvoie un message vrai si cette adresse QCborValue est de type chaîne de caractères. La valeur de la chaîne peut être récupérée à l'aide de toString().
Voir aussi type() et toString().
bool QCborValue::isTag() const
Renvoie un message vrai si cette adresse QCborValue est de type "tag". La valeur de la balise peut être récupérée à l'aide de tag() et la valeur balisée à l'aide de taggedValue().
Cette fonction renvoie également true pour les types étendus reconnus par l'API. Pour le code qui gère les types étendus directement 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 en utilisant taggedValue().
Voir aussi type(), tag(), et taggedValue().
bool QCborValue::isTrue() const
Retourne vrai si ce QCborValue est un booléen avec une valeur vraie. Cette fonction existe car, en interne, les booléens CBOR sont stockés comme deux types distincts, l'un pour false et l'autre pour true.
Voir aussi type(), isBool(), isFalse() et toBool().
bool QCborValue::isUndefined() const
Retourne vrai si ce QCborValue est de type indéfini.
Les valeurs non définies de CBOR sont utilisées pour indiquer des informations manquantes, généralement à la suite d'une opération précédente qui ne s'est pas terminé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 non définies se distinguent des valeurs nulles.
QCborValue Les objets QC avec des valeurs non définies sont également différents des objets QCborValue non valides. L'API ne crée pas de QCborValues non valides, mais elles peuvent exister à la suite d'une erreur d'analyse.
Voir également type(), isNull() et isInvalid().
bool QCborValue::isUrl() const
Renvoie un message vrai si cette adresse QCborValue est de type URL. La valeur de l'URL peut être récupérée à l'aide de toUrl().
bool QCborValue::isUuid() const
Retourne true si cette QCborValue contient un UUID. La valeur peut être récupérée en utilisant toUuid().
Voir aussi type() et toUuid().
[noexcept] void QCborValue::swap(QCborValue &other)
Remplace cette valeur par other. Cette opération est très rapide et n'échoue jamais.
QCborTag QCborValue::tag(QCborTag defaultValue = QCborTag(-1)) const
Renvoie la balise de cet objet étendu QCborValue, s'il est du type balise, defaultValue sinon.
CBOR représente les types étendus en associant un nombre (la balise) à une représentation stockée. Cette fonction renvoie ce numéro. Pour récupérer la représentation, utilisez taggedValue().
Voir aussi isTag(), taggedValue(), isDateTime(), isUrl(), isRegularExpression() et isUuid().
QCborValue QCborValue::taggedValue(const QCborValue &defaultValue = QCborValue()) const
Renvoie la valeur étiquetée de cet objet étendu QCborValue, s'il est du type étiqueté, defaultValue sinon.
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 aussi 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 cette page QCborValue, si elle est de type tableau. Sinon, elle renvoie defaultValue.
Notez que cette fonction n'effectue aucune conversion d'autres types vers QCborArray.
Voir aussi isArray(), isByteArray(), isMap(), isContainer() et toMap().
bool QCborValue::toBool(bool defaultValue = false) const
Renvoie la valeur booléenne stockée sur ce site QCborValue, si elle est de type booléen. Sinon, il renvoie defaultValue.
Voir aussi isBool(), isTrue() et isFalse().
QByteArray QCborValue::toByteArray(const QByteArray &defaultValue = {}) const
Renvoie la valeur du tableau d'octets stockée dans cette page QCborValue, si elle est de type tableau d'octets. Sinon, elle renvoie defaultValue.
Notez que cette fonction n'effectue aucune conversion d'autres types vers QByteArray.
Voir aussi isByteArray(), isString() et toString().
QByteArray QCborValue::toCbor(QCborValue::EncodingOptions opt = NoTransformation) const
Encode cet objet QCborValue dans 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 n'échouera pas, sauf si ce 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 invalides ne sont pas produits normalement par l'API, mais peuvent résulter d'erreurs de décodage.
Par défaut, cette fonction n'effectue aucune transformation sur les valeurs contenues dans QCborValue, écrivant toutes les valeurs à virgule flottante directement en tant que types à double précision (double). Si l'option UseFloat est spécifiée, elle utilisera la simple précision (float) pour toute valeur en virgule flottante pour laquelle il n'y a pas de perte de précision en utilisant cette représentation. Cela inclut les infinis et les valeurs NaN.
De même, si l'option UseFloat16 est spécifiée, cette fonction essaiera d'utiliser la demi-précision (qfloat16) en virgule flottante si la conversion n'entraîne pas de perte de précision. C'est toujours le cas pour les infinis et les NaN.
Si UseIntegers est spécifié, la fonction utilisera des entiers pour toute valeur en virgule flottante contenant un entier réel.
Voir aussi fromCbor(), fromVariant(), et fromJsonValue().
void QCborValue::toCbor(QCborStreamWriter &writer, QCborValue::EncodingOptions opt = NoTransformation) const
Encode cet objet QCborValue dans sa représentation CBOR, en utilisant les options spécifiées dans opt, vers le scripteur spécifié par writer. Le même rédacteur peut être utilisé par plusieurs QCborValues, par exemple, afin d'encoder différents éléments d'un tableau plus grand.
Cette fonction n'échouera pas, sauf si ce 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 invalides ne sont pas produits normalement par l'API, mais peuvent résulter d'erreurs de décodage.
Par défaut, cette fonction n'effectue aucune transformation sur les valeurs contenues dans QCborValue, écrivant toutes les valeurs en virgule flottante directement en tant que types à double précision (binary64). Si l'option UseFloat est spécifiée, elle utilisera la simple précision (binary32) pour toute valeur en virgule flottante pour laquelle il n'y a pas de perte de précision en utilisant cette représentation. Cela inclut les infinis et les valeurs NaN.
De même, si l'option UseFloat16 est spécifiée, cette fonction essaiera d'utiliser la demi-précision (binary16) en virgule flottante si la conversion n'entraîne pas de perte de précision. C'est toujours le cas pour les infinis et les NaN.
Si UseIntegers est spécifié, la fonction utilisera des entiers pour toute valeur en virgule flottante contenant un entier réel.
Il s'agit d'une fonction surchargée.
Voir aussi fromCbor(), fromVariant(), et fromJsonValue().
QDateTime QCborValue::toDateTime(const QDateTime &defaultValue = {}) const
Renvoie la valeur de la date et de l'heure stockée dans ce site QCborValue, s'il s'agit d'un type étendu de date et d'heure. Sinon, elle renvoie defaultValue.
Notez que cette fonction n'effectue aucune conversion d'autres types vers QDateTime.
Voir aussi isDateTime(), isTag() et taggedValue().
QString QCborValue::toDiagnosticNotation(QCborValue::DiagnosticNotationOptions opts = Compact) const
Crée l'équivalent de la 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 pour le débogage, afin d'aider le développeur à comprendre quelle valeur est stockée dans QCborValue ou dans un flux CBOR. Pour cette raison, l'API Qt ne permet pas d'analyser le diagnostic dans le format en mémoire ou dans le flux CBOR, bien que la représentation soit unique et que cela soit possible.
La notation de diagnostic CBOR est spécifiée dans 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 que l'on ne trouve pas dans JSON. Le format étendu activé par l'indicateur ExtendedFormat fait actuellement l'objet de quelques projets de l'IETF et son format est susceptible d'être modifié.
Cette fonction produit la représentation équivalente du flux que toCbor() produirait, sans aucune option de transformation fournie ici. Cela implique également que cette fonction ne peut pas produire une représentation du flux qui a été utilisé pour créer l'objet, s'il a été créé à l'aide de fromCbor(), car cette fonction peut avoir appliqué 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 en virgule flottante stockée dans ce site QCborValue, si elle 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 ce QCborValue, si elle est de type entier. Si elle 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 en JSON et le renvoie sous forme de QJsonValue.
Veuillez noter que CBOR contient un ensemble de types plus riche et plus large que JSON, de sorte que certaines informations peuvent être perdues lors de cette conversion. Le tableau suivant compare les types CBOR aux types JSON et indique si des informations peuvent être perdues ou non.
| Type CBOR | Type JSON | Commentaires |
|---|---|---|
| Bool | Bool | Aucune perte de données possible |
| Double | Nombre | Les infinis et NaN seront convertis en Null ; pas de perte de données pour les autres valeurs |
| Entier | Nombre entier | Perte de données possible lors de la conversion si l'entier est supérieur à253 ou inférieur à -253. |
| Nul | Nul | Aucune perte de données possible |
| Non défini | Nulle | Perte d'informations sur le type |
| Chaîne | Chaîne | Aucune perte de données possible |
| Tableau d'octets | Chaîne | Converti en un encodage sans perte comme Base64url, mais la distinction entre les chaînes et les tableaux d'octets est perdue. |
| Autres types simples | Chaîne | Perte de l'information sur le type |
| Tableau | Tableau | La conversion s'applique à chaque valeur contenue |
| Carte | Objet | Les clés sont converties en chaînes de caractères ; les valeurs sont converties selon ce tableau |
| Tags et types étendus | Spécial | Le numéro de balise lui-même est perdu et la valeur balisée est convertie en JSON. |
Pour plus d'informations sur la conversion des clés de la carte CBOR en chaînes de caractères, voir QCborMap::toJsonObject().
Si ce site QCborValue contient une valeur non définie, cette fonction renverra également un site QJsonValue non défini. Notez que JSON ne prend pas en charge les valeurs non définies et que les QJsonValues non définies sont une extension de la spécification. Elles ne peuvent pas être conservées dans un QJsonArray ou un QJsonObject, mais peuvent être renvoyées par des fonctions pour indiquer un échec. Pour le reste, elles sont identiques à null.
Traitement spécial des balises et des types étendus
Certaines balises sont traitées de manière spéciale et modifient la transformation de la valeur balisée de CBOR en JSON. Le tableau suivant répertorie ces cas particuliers :
| Balise | Type CBOR | Transformation |
|---|---|---|
| ExpectedBase64url | Tableau d'octets | Encode le tableau d'octets en Base64url |
| ExpectedBase64 | Tableau d'octets | Encode le tableau d'octets en Base64 |
| ExpectedBase16 | Tableau d'octets | Encode le tableau d'octets en hexadécimal |
| Url | Url et chaîne | Utilise QUrl::toEncoded() pour normaliser l'encodage au format entièrement encodé de l'URL |
| Uuid | Uuid et tableau d'octets | Utilise QUuid::toString() pour créer la représentation de la chaîne. |
Voir aussi fromJsonValue(), toVariant(), QCborArray::toJsonArray(), et QCborMap::toJsonObject().
Renvoie la valeur de la carte stockée sur ce site QCborValue, s'il s'agit d'une carte. Sinon, elle renvoie defaultValue.
Notez que cette fonction n'effectue aucune conversion d'autres types vers QCborMap.
Voir aussi isMap(), isArray(), isContainer() et toArray().
QRegularExpression QCborValue::toRegularExpression(const QRegularExpression &defaultValue = {}) const
Renvoie la valeur de l'expression régulière stockée dans ce fichier QCborValue, s'il s'agit d'un motif d'expression régulière de type étendu. Sinon, elle renvoie defaultValue.
Notez que cette fonction n'effectue aucune conversion d'autres types vers QRegularExpression.
Voir aussi isRegularExpression(), isTag() et taggedValue().
QCborSimpleType QCborValue::toSimpleType(QCborSimpleType defaultValue = QCborSimpleType::Undefined) const
Renvoie le type simple de cette QCborValue, s'il s'agit d'un type simple. S'il ne s'agit pas d'un type simple, la fonction renvoie defaultValue.
Les types suivants sont des types simples et cette fonction renvoie les valeurs indiquées :
| QCborValue::False | QCborSimpleType::False |
| QCborValue::True | QCborSimpleType::True |
| QCborValue::Null | QCborSimpleType::Null |
| QCborValue::Undefined | QCborSimpleType::Undefined |
Voir également type(), isSimpleType(), isBool(), isTrue(), isFalse(), isNull() et isUndefined().
QString QCborValue::toString(const QString &defaultValue = {}) const
Renvoie la valeur de la chaîne de caractères stockée sur ce site QCborValue, si elle est de type chaîne de caractères. Sinon, elle renvoie defaultValue.
Notez que cette fonction n'effectue aucune conversion d'autres types vers QString.
Voir aussi toStringView(), isString(), isByteArray() et toByteArray().
[since 6.10] QAnyStringView QCborValue::toStringView(QAnyStringView defaultValue = {}) const
Renvoie la valeur de la chaîne de caractères stockée sur ce site QCborValue, si elle est de type chaîne de caractères. Sinon, il renvoie defaultValue. Comme QCborValue stocke les chaînes de caractères en US-ASCII, UTF-8 ou UTF-16, la valeur renvoyée par QAnyStringView 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 à une fonction membre non-const sur cet objet. Si cet objet sort du champ d'application, la valeur de retour est valide jusqu'au prochain appel à une fonction membre non-const sur l'objet CBOR parent (carte ou tableau).
Notez que cette fonction n'effectue aucune conversion d'autres types vers QString.
Cette fonction a été introduite dans Qt 6.10.
Voir aussi toString(), isString(), isByteArray(), et toByteArray().
QUrl QCborValue::toUrl(const QUrl &defaultValue = {}) const
Renvoie la valeur de l'URL stockée dans ce site QCborValue, s'il s'agit d'un type d'URL étendu. Sinon, elle renvoie defaultValue.
Notez que cette fonction n'effectue aucune conversion d'autres types vers QUrl.
Voir aussi isUrl(), isTag() et taggedValue().
QUuid QCborValue::toUuid(const QUuid &defaultValue = {}) const
Renvoie la valeur UUID stockée dans ce site QCborValue, s'il s'agit d'un type UUID étendu. Sinon, elle renvoie defaultValue.
Notez que cette fonction n'effectue aucune conversion d'autres types vers QUuid.
Voir aussi isUuid(), isTag() et taggedValue().
QVariant QCborValue::toVariant() const
Convertit cette valeur en un type Qt natif et renvoie la valeur correspondante à QVariant.
Le tableau suivant répertorie les correspondances effectuées entre QCborValue types et Qt meta types.
| Type CBOR | Type Qt ou C | Notes |
|---|---|---|
| Entier | qint64 | |
| Double | double | |
| Bool | bool | |
| Nul | std::nullptr_t | |
| Indéfini | pas de type (QVariant()) | |
| Tableau d'octets | QByteArray | |
| Chaîne | QString | |
| Tableau | QVariantList | Convertit récursivement toutes les valeurs |
| Carte | QVariantMap | Les types de clés sont "stringifiés". |
| Autres types simples | QCborSimpleType | |
| DateTime | QDateTime | |
| Url | QUrl | |
| RegularExpression | QRegularExpression | |
| Uuid | QUuid | |
| Autres balises | Spécial | La balise est ignorée et la valeur balisée est convertie à l'aide de cette fonction. |
Notez que les valeurs des cartes et des tableaux CBOR sont également converties récursivement à l'aide de cette fonction et placées dans QVariantMap et QVariantList à la place. Vous ne trouverez pas QCborMap et QCborArray dans les QVariants.
Les QVariantMaps ont des clés de type chaîne de caractères, contrairement à CBOR, de sorte que la conversion d'un QCborMap en QVariantMap impliquera une étape de "stringification" des valeurs de la clé. Voir QCborMap::toJsonObject() pour plus de détails.
Voir aussi fromVariant(), toJsonValue(), QCborArray::toVariantList() et QCborMap::toVariantMap().
QCborValue::Type QCborValue::type() const
Renvoie le type de ce site QCborValue. Le type peut également être récupéré ultérieurement par l'une des fonctions "isXxx".
Voir aussi 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 ce QCborObject par une copie de other.
[noexcept] QCborValue &QCborValue::operator=(QCborValue &&other)
Déplace le contenu de l'objet other QCborValue dans celui-ci et libère les ressources de celui-ci. Renvoie une référence à cet objet.
Il s'agit d'une fonction surchargée.
QCborValueRef QCborValue::operator[](const QString &key)
Renvoie un QCborValueRef qui peut être utilisé pour lire ou modifier l'entrée dans this, en tant que carte, avec l'adresse key donnée. Lorsque ce QCborValue est un QCborMap, cette fonction est équivalente à l'opérateur de correspondance[] sur cette carte.
Avant de renvoyer la référence : si ce QCborValue était un tableau, il est d'abord converti en carte (de sorte que map[i] est array[i] pour chaque index, i, avec array[i] valide) ; sinon, si ce n'était pas une carte, elle sera remplacée par une carte vide.
Voir aussi operator[](qint64), QCborMap::operator[], QCborMap::value(), et QCborMap::find().
const QCborValue QCborValue::operator[](const QString &key) const
Si l'objet QCborValue est un QCborMap, il recherche dans les éléments la valeur dont la clé correspond à key. S'il n'y a pas de clé correspondant à key dans la carte ou si l'objet QCborValue n'est pas une carte, la valeur indéfinie est renvoyée.
Cette fonction est équivalente à :
value.toMap().value(key);
Voir aussi operator[](qint64), QCborMap::operator[], QCborMap::value(), et QCborMap::find().
QCborValueRef QCborValue::operator[](QLatin1StringView key)
Renvoie un QCborValueRef qui peut être utilisé pour lire ou modifier l'entrée dans this, en tant que carte, avec l'adresse key donnée. Lorsque ce QCborValue est un QCborMap, cette fonction est équivalente à l'opérateur de correspondance[] sur cette carte.
Avant de renvoyer la référence : si ce QCborValue était un tableau, il est d'abord converti en carte (de sorte que map[i] est array[i] pour chaque index, i, avec array[i] valide) ; sinon, si ce n'était pas une carte, elle sera remplacée par une carte vide.
Il s'agit d'une fonction surchargée.
Voir aussi operator[](qint64), QCborMap::operator[], QCborMap::value(), et QCborMap::find().
QCborValueRef QCborValue::operator[](qint64 key)
Renvoie un QCborValueRef qui peut être utilisé pour lire ou modifier l'entrée dans this, en tant que carte ou tableau, avec l'adresse key donnée. Lorsque ce QCborValue est un QCborMap ou, pour 0 <= clé < 0x10000, un QCborArray, cette fonction est équivalente à l'opérateur de correspondance[] sur cette carte ou ce tableau.
Avant de renvoyer la référence : si ce QCborValue était un tableau mais que la clé est hors de portée, le tableau est d'abord converti en carte (de sorte que map[i] est array[i] pour chaque indice, i, avec array[i] valide) ; sinon, si ce n'était pas une carte, elle sera remplacée par une carte vide.
Il s'agit d'une fonction surchargée.
Voir aussi operator[], QCborMap::operator[], QCborMap::value(), QCborMap::find(), QCborArray::operator[], et QCborArray::at().
const QCborValue QCborValue::operator[](QLatin1StringView key) const
Si l'objet QCborValue est un QCborMap, il recherche dans les éléments la valeur dont la clé correspond à key. S'il n'y a pas de clé correspondant à key dans la carte ou si l'objet QCborValue n'est pas une carte, la valeur non définie est renvoyée.
Cette fonction est équivalente à :
value.toMap().value(key);
Il s'agit d'une fonction surchargée.
Voir aussi operator[](qint64), QCborMap::operator[], QCborMap::value(), et QCborMap::find().
const QCborValue QCborValue::operator[](qint64 key) const
Si cet objet QCborValue est un QCborMap, il recherche dans les éléments la valeur dont la clé correspond à key. Si ceci est un QCborArray, 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 pas un tableau ou une carte, il renvoie la valeur indéfinie.
Il s'agit d'une fonction surchargée.
Voir aussi operator[], QCborMap::operator[], QCborMap::value(), QCborMap::find(), QCborArray::operator[], et QCborArray::at().
Non-membres apparentés
[noexcept] bool operator!=(const QCborValue &lhs, const QCborValue &rhs)
Compare lhs et rhs, et renvoie vrai si les contenus diffèrent, faux sinon. Si chaque QCborValue contient un tableau ou une carte, la comparaison est récursive pour les éléments qu'ils contiennent.
Pour plus d'informations sur l'égalité CBOR dans Qt, voir QCborValue::compare().
Voir aussi 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 sinon. Si chaque QCborValue contient un tableau ou une carte, la comparaison est récursive pour 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 vrai si lhs doit être trié avant rhs ou est égal à rhs, faux sinon. Si chaque QCborValue contient un tableau ou une carte, la comparaison est récursive pour 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 vrai s'ils ont le même contenu, faux sinon. Si chaque QCborValue contient un tableau ou une carte, la comparaison est récursive pour les éléments qu'ils contiennent.
Pour plus d'informations sur l'égalité CBOR dans Qt, voir compare().
Voir aussi 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é après rhs, false sinon. Si chaque QCborValue contient un tableau ou une carte, la comparaison est récursive pour 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 vrai si lhs doit être trié après rhs ou est égal à rhs, faux sinon. Si chaque QCborValue contient un tableau ou une carte, la comparaison est récursive pour 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.