QJsonValue Class
La classe QJsonValue encapsule une valeur au format JSON. En savoir plus...
| En-tête : | #include <QJsonValue> |
| 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
- QJsonValue fait partie du support JSON dans Qt et des classes partagées implicitement.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Comparaisons de QJsonValue
| Catégorie | Types comparables |
|---|---|
| égalité | QJsonValue |
| égalité | QJsonValueConstRef et QJsonValueRef. |
Types publics
(since 6.9) | JsonFormat |
| enum | Type { Null, Bool, Double, String, Array, …, Undefined } |
Fonctions publiques
| QJsonValue(QJsonValue::Type type = Null) | |
| QJsonValue(QLatin1StringView s) | |
| QJsonValue(bool b) | |
| QJsonValue(const QJsonArray &a) | |
| QJsonValue(const QJsonObject &o) | |
| QJsonValue(const QString &s) | |
| QJsonValue(const char *s) | |
| QJsonValue(double v) | |
(since 6.3) | QJsonValue(QJsonArray &&a) |
(since 6.3) | QJsonValue(QJsonObject &&o) |
| QJsonValue(int v) | |
| QJsonValue(qint64 v) | |
| QJsonValue(const QJsonValue &other) | |
| QJsonValue(QJsonValue &&other) | |
| ~QJsonValue() | |
| bool | isArray() const |
| bool | isBool() const |
| bool | isDouble() const |
| bool | isNull() const |
| bool | isObject() const |
| bool | isString() const |
| bool | isUndefined() const |
| void | swap(QJsonValue &other) |
| QJsonArray | toArray(const QJsonArray &defaultValue) const |
| QJsonArray | toArray() const |
| bool | toBool(bool defaultValue = false) const |
| double | toDouble(double defaultValue = 0) const |
| int | toInt(int defaultValue = 0) const |
(since 6.0) qint64 | toInteger(qint64 defaultValue = 0) const |
(since 6.9) QByteArray | toJson(QJsonValue::JsonFormat format = JsonFormat::Indented) const |
| QJsonObject | toObject(const QJsonObject &defaultValue) const |
| QJsonObject | toObject() const |
| QString | toString() const |
| QString | toString(const QString &defaultValue) const |
(since 6.10) QAnyStringView | toStringView(QAnyStringView defaultValue = {}) const |
| QVariant | toVariant() const |
| QJsonValue::Type | type() const |
| QJsonValue & | operator=(QJsonValue &&other) |
| QJsonValue & | operator=(const QJsonValue &other) |
| const QJsonValue | operator[](const QString &key) const |
| const QJsonValue | operator[](qsizetype i) const |
| const QJsonValue | operator[](QLatin1StringView key) const |
| const QJsonValue | operator[](QStringView key) const |
Membres publics statiques
(since 6.9) QJsonValue | fromJson(QByteArrayView json, QJsonParseError *error = nullptr) |
| QJsonValue | fromVariant(const QVariant &variant) |
Éléments non membres associés
| bool | operator!=(const QJsonValue &lhs, const QJsonValue &rhs) |
| bool | operator==(const QJsonValue &lhs, const QJsonValue &rhs) |
Description détaillée
Une valeur en JSON peut être l'un des 6 types de base suivants :
JSON est un format permettant de stocker des données structurées. Il comporte six types de données de base :
- bool QJsonValue::Bool
- double QJsonValue::Double
- chaîne QJsonValue::String
- array QJsonValue::Array
- object QJsonValue::Object
- null QJsonValue::Null
Une valeur peut représenter n'importe lequel des types de données ci-dessus. De plus, QJsonValue dispose d'un indicateur spécial pour représenter les valeurs non définies. Celui-ci peut être interrogé à l'aide de la méthode isUndefined().
Le type de la valeur peut être interrogé à l’aide de ` type()` ou d’accesseurs tels que ` isBool()`, ` isString()`, etc. De même, la valeur peut être convertie vers le type qui y est stocké à l’aide de ` toBool()`, ` toString()`, etc.
Les valeurs sont strictement typées en interne et, contrairement à ` QVariant `, aucune conversion implicite de type ne sera tentée. Cela implique que la conversion vers un type qui n’est pas stocké dans la valeur renverra une valeur de retour construite par défaut.
QJsonValueRef
QJsonValueRef est une classe d’aide pour QJsonArray et QJsonObject. Lorsque vous obtenez un objet de type QJsonValueRef, vous pouvez l’utiliser comme s’il s’agissait d’une référence à un QJsonValue. Si vous lui attribuez une valeur, l’affectation s’appliquera à l’élément de QJsonArray ou QJsonObject à partir duquel vous avez obtenu la référence.
Les méthodes suivantes renvoient des objets de type ` QJsonValueRef` :
- QJsonArray::operator[](qsizetype i)
- QJsonObject::operator[](const QString & key) const
Voir également la prise en charge de JSON dans Qt et la section « Enregistrement et chargement d’une partie ».
Documentation sur les types de membres
[alias, since 6.9] QJsonValue::JsonFormat
Identique à ` QJsonDocument::JsonFormat`.
Ce typedef a été introduit dans Qt 6.9.
enum QJsonValue::Type
Cette énumération décrit le type de la valeur JSON.
| Constante | Valeur | Description |
|---|---|---|
QJsonValue::Null | 0x0 | Une valeur nulle |
QJsonValue::Bool | 0x1 | Une valeur booléenne. Utilisez toBool() pour la convertir en booléen. |
QJsonValue::Double | 0x2 | Une valeur numérique. Utilisez toDouble() pour la convertir en double, ou toInteger() pour la convertir en qint64. |
QJsonValue::String | 0x3 | Une chaîne de caractères. Utilisez toString() pour la convertir en QString. |
QJsonValue::Array | 0x4 | Un tableau. Utilisez toArray() pour le convertir en QJsonArray. |
QJsonValue::Object | 0x5 | Un objet. Utilisez ` toObject()` pour le convertir en ` QJsonObject`. |
QJsonValue::Undefined | 0x80 | La valeur est indéfinie. Cette valeur est généralement renvoyée en cas d’erreur, notamment lorsque l’on tente de lire une valeur hors limites dans un tableau ou une clé inexistante dans un objet. |
Documentation des fonctions membres
QJsonValue::QJsonValue(QJsonValue::Type type = Null)
Crée un objet `QJsonValue` de type ` type`.
Par défaut, une valeur Null est créée.
QJsonValue::QJsonValue(QLatin1StringView s)
Crée une valeur de type String, contenant la chaîne Latin-1 telle qu'elle est interprétée par s.
QJsonValue::QJsonValue(bool b)
Crée une valeur de type Bool, dont la valeur est « b ».
QJsonValue::QJsonValue(const QJsonArray &a)
Crée une valeur de type Array, dont la valeur est a.
QJsonValue::QJsonValue(const QJsonObject &o)
Crée une valeur de type Object, dont la valeur est « o ».
QJsonValue::QJsonValue(const QString &s)
Crée une valeur de type String, dont la valeur est « s ».
QJsonValue::QJsonValue(const char *s)
Crée une valeur de type String dont la valeur est « s », en supposant que l'entrée soit encodée en UTF-8.
Vous pouvez désactiver ce constructeur en définissant QT_NO_CAST_FROM_ASCII lors de la compilation de vos applications.
QJsonValue::QJsonValue(double v)
Crée une valeur de type Double, dont la valeur est v.
[noexcept, since 6.3] QJsonValue::QJsonValue(QJsonArray &&a)
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.3.
[noexcept, since 6.3] QJsonValue::QJsonValue(QJsonObject &&o)
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.3.
QJsonValue::QJsonValue(int v)
Crée une valeur de type Double, dont la valeur est v.
Il s'agit d'une fonction surchargée.
QJsonValue::QJsonValue(qint64 v)
Crée une valeur de type Double, dont la valeur est v.
Cette valeur est stockée en interne sous la forme d'un entier de 64 bits ; elle conserve donc toute sa précision tant qu'elle est récupérée à l'aide de ` toInteger()`. En revanche, la récupération de sa valeur à l'aide de ` toDouble()` entraîne une perte de précision, sauf si la valeur se situe entre ±2^53.
Il s’agit d’une fonction surchargée.
Voir également toInteger() et toDouble().
[noexcept] QJsonValue::QJsonValue(const QJsonValue &other)
Crée une copie de other.
[noexcept] QJsonValue::QJsonValue(QJsonValue &&other)
Crée un objet `QJsonValue` à partir de ` other`.
[noexcept] QJsonValue::~QJsonValue()
Cela anéantit toute valeur.
[static, since 6.9] QJsonValue QJsonValue::fromJson(QByteArrayView json, QJsonParseError *error = nullptr)
Analyse json en tant que valeur JSON encodée en UTF-8, puis crée un objet QJsonValue à partir de celle-ci.
Renvoie un objet ` QJsonValue ` valide si l'analyse est réussie. En cas d'échec, la valeur renvoyée sera ` undefined`, et la variable facultative ` error ` contiendra des détails supplémentaires sur l'erreur.
Cette fonction a été introduite dans Qt 6.9.
Voir également QJsonParseError, isUndefined() et toJson().
[static] QJsonValue QJsonValue::fromVariant(const QVariant &variant)
Convertit une valeur de type ` variant ` en une valeur de type ` QJsonValue ` et la renvoie.
La conversion transformera les types d'QVariant s comme suit :
| Type source | Type de destination |
|---|---|
| QJsonValue::Null | |
| QJsonValue::Bool | |
| QJsonValue::Double | |
| QJsonValue::String | |
| QJsonValue::Array | |
| QJsonValue::Object | |
| QJsonValue::String. La conversion utilisera la fonction ` QUrl::toString()` avec l’indicateur ` QUrl::FullyEncoded`, afin d’assurer une compatibilité maximale lors de l’analyse de l’URL | |
| QJsonValue::String. Depuis Qt 5.11, la chaîne résultante n’inclura pas d’accolades | |
| Quel que soit le type renvoyé par ` QCborValue::toJsonValue()`. | |
| QJsonValue::Array. Voir la fonction QCborValue::toJsonValue() pour connaître les restrictions de conversion. | |
| QJsonValue::Map. Voir QCborValue::toJsonValue() pour les restrictions de conversion et la « conversion en chaîne » des clés de la carte. |
Perte d’informations et autres types
QVariant peuvent contenir plus d’informations que ce qui est représentable en JSON. Si l’ QVariant n’est pas l’un des types ci-dessus, la conversion n’est pas garantie et est susceptible d’être modifiée dans les futures versions de Qt, comme cela a été le cas pour le type UUID. Le code doit s’efforcer de ne pas utiliser d’autres types que ceux énumérés ci-dessus.
Si ` QVariant::isNull()` renvoie `true`, une valeur ` QJsonValue ` nulle 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.
Une valeur à virgule flottante qui est soit infinie, soit NaN, sera convertie en une valeur JSON nulle. Depuis Qt 6.0, QJsonValue peut stocker toute la précision de n’importe quel entier signé de 64 bits sans perte, mais dans les versions précédentes, les valeurs situées en dehors de la plage ±2^53 peuvent subir une perte de précision. Les valeurs non signées de 64 bits supérieures ou égales à 2^63 subiront soit une perte de précision, soit un alias vers des valeurs négatives ; il convient donc d’éviter d’utiliser ` QMetaType::ULongLong `.
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 toujours, en appelant QVariant::toString(). Si la conversion échoue, la valeur est remplacée par une valeur JSON nulle. Notez que la fonction ` QVariant::toString()` entraîne également une perte de précision pour la plupart des types. Par exemple, si l’ QVariant e transmise représente des données brutes sous forme de tableau d’octets, il est recommandé de l’encoder au préalable en Base64 (ou dans un autre format sans perte), sinon une conversion avec perte utilisant ` QString::fromUtf8()` sera appliquée.
Veuillez noter que les conversions effectuées via QVariant::toString() sont susceptibles d’être modifiées à tout moment. Les fonctions QVariant et QJsonValue pourraient être étendues à l’avenir pour prendre en charge davantage de types, ce qui entraînerait une modification du fonctionnement de cette fonction lors des conversions.
Voir également toVariant() et QCborValue::fromVariant().
bool QJsonValue::isArray() const
Renvoie « true » si la valeur contient un tableau.
Voir aussi toArray().
bool QJsonValue::isBool() const
Renvoie « true » si la valeur contient une valeur booléenne.
Voir aussi toBool().
bool QJsonValue::isDouble() const
Renvoie « true » si la valeur contient un nombre à virgule flottante de type double.
Voir aussi toDouble().
bool QJsonValue::isNull() const
Renvoie « true » si la valeur est nulle.
bool QJsonValue::isObject() const
Renvoie « true » si la valeur contient un objet.
Voir aussi toObject().
bool QJsonValue::isString() const
Renvoie « true » si la valeur contient une chaîne de caractères.
Voir aussi toString().
bool QJsonValue::isUndefined() const
Renvoie « true » si la valeur n'est pas définie. Cela peut se produire dans certains cas d'erreur, par exemple lors de l'accès à une clé inexistante dans un « QJsonObject ».
[noexcept] void QJsonValue::swap(QJsonValue &other)
Permute cette valeur avec celle de ` other`. Cette opération est très rapide et ne rencontre jamais d'échec.
QJsonArray QJsonValue::toArray(const QJsonArray &defaultValue) const
Convertit la valeur en tableau et la renvoie.
Si type() n'est pas un tableau, l'defaultValue sera renvoyée.
QJsonArray QJsonValue::toArray() const
Convertit la valeur en tableau et la renvoie.
Si type() n'est pas un tableau, une exception QJsonArray() sera levée.
Il s'agit d'une fonction surchargée.
bool QJsonValue::toBool(bool defaultValue = false) const
Convertit la valeur en booléen et la renvoie.
Si type() n'est pas de type booléen, l'defaultValue sera renvoyée.
double QJsonValue::toDouble(double defaultValue = 0) const
Convertit la valeur en type « double » et la renvoie.
Si type() n'est pas de type Double, l'defaultValue sera renvoyée.
int QJsonValue::toInt(int defaultValue = 0) const
Convertit la valeur en entier (int) et la renvoie.
Si type() n'est pas de type Double ou si la valeur n'est pas un nombre entier, l'defaultValue sera renvoyée.
[since 6.0] qint64 QJsonValue::toInteger(qint64 defaultValue = 0) const
Convertit la valeur en nombre entier et la renvoie.
Si ` type()` n'est pas de type `Double` ou si la valeur n'est pas un nombre entier représentable sous la forme `qint64`, l'defaultValue ` sera renvoyée.
Cette fonction a été introduite dans Qt 6.0.
[since 6.9] QByteArray QJsonValue::toJson(QJsonValue::JsonFormat format = JsonFormat::Indented) const
Convertit l'QJsonValue e en une valeur JSON encodée en UTF-8 dans l'format fourni.
Cette fonction a été introduite dans Qt 6.9.
Voir également fromJson() et JsonFormat.
QJsonObject QJsonValue::toObject(const QJsonObject &defaultValue) const
Convertit la valeur en objet et la renvoie.
Si type() n'est pas de type Object, l'defaultValue sera renvoyée.
QJsonObject QJsonValue::toObject() const
Convertit la valeur en objet et la renvoie.
Si type() n'est pas de type Object, la fonction QJsonObject() sera renvoyée.
Il s'agit d'une fonction surchargée.
QString QJsonValue::toString() const
Convertit la valeur en une chaîne de caractères ( QString ) et la renvoie.
Si type() n'est pas de type String, une valeur nulle QString sera renvoyée.
Voir aussi ` QString::isNull()`.
QString QJsonValue::toString(const QString &defaultValue) const
Convertit la valeur en « QString » et la renvoie.
Si type() n'est pas de type String, l'defaultValue sera renvoyée.
Voir aussi ` toStringView()`.
[since 6.10] QAnyStringView QJsonValue::toStringView(QAnyStringView defaultValue = {}) const
Renvoie la valeur de chaîne stockée dans cet QJsonValue, si celui-ci est de type string. Sinon, elle renvoie defaultValue. Étant donné que QJsonValue 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 à une fonction membre non-const de cet objet. Si cet objet sort de sa portée, la valeur de retour est valide jusqu’au prochain appel à une fonction membre non-const de l’objet JSON parent ou du tableau.
Cette fonction a été introduite dans Qt 6.10.
Voir également ` toString()`.
QVariant QJsonValue::toVariant() const
Convertit la valeur en un type « QVariant » ().
Les types de la classe ` QJsonValue ` seront convertis comme suit :
| Constante | Description |
|---|---|
Null | QMetaType::Nullptr |
Bool | QMetaType::Bool |
Double | QMetaType::Double ou QMetaType::LongLong |
String | QString |
Array | QVariantList |
Object | QVariantMap |
Undefined | QVariant() |
Voir aussi fromVariant().
QJsonValue::Type QJsonValue::type() const
Renvoie le type de la valeur.
Voir aussi QJsonValue::Type.
[noexcept] QJsonValue &QJsonValue::operator=(QJsonValue &&other)
La commande « move » attribue la valeur « other » à cette variable.
[noexcept] QJsonValue &QJsonValue::operator=(const QJsonValue &other)
Attribue à cet objet la valeur stockée dans ` other `.
const QJsonValue QJsonValue::operator[](const QString &key) const
Renvoie un objet ` QJsonValue ` représentant la valeur associée à la clé ` key`.
Cela revient à appeler ` toObject()`.value(key).
L'QJsonValue renvoyée est QJsonValue::Undefined si la clé n'existe pas ou si isObject() est faux.
Voir également QJsonValue, QJsonValue::isUndefined() et QJsonObject.
const QJsonValue QJsonValue::operator[](qsizetype i) const
Renvoie un objet ` QJsonValue ` représentant la valeur associée à l'i.
Cela revient à appeler ` toArray()`.at(i).
L'QJsonValue renvoyée est QJsonValue::Undefined si i est hors limites ou si isArray() est faux.
Voir également QJsonValue, QJsonValue::isUndefined() et QJsonArray.
const QJsonValue QJsonValue::operator[](QLatin1StringView key) const
Il s'agit d'une fonction surchargée.
const QJsonValue QJsonValue::operator[](QStringView key) const
Il s'agit d'une fonction surchargée.
Éléments non membres associés
[noexcept] bool operator!=(const QJsonValue &lhs, const QJsonValue &rhs)
Renvoie « true » si la valeur « lhs » n'est pas égale à la valeur « rhs », et « false » dans le cas contraire.
[noexcept] bool operator==(const QJsonValue &lhs, const QJsonValue &rhs)
Renvoie « true » si la valeur « lhs » est égale à la valeur « rhs », et « false » dans le cas contraire.
© 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.