QJsonValue Class
Die Klasse „QJsonValue“ kapselt einen Wert im JSON-Format. Mehr dazu...
| Header: | #include <QJsonValue> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QJsonValue ist Teil der JSON-Unterstützung in Qt und der implizit gemeinsam genutzten Klassen.
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
QJsonValue-Vergleiche
| Kategorie | Vergleichbare Typen |
|---|---|
| Gleichheit | QJsonValue |
| Gleichheit | QJsonValueConstRef und QJsonValueRef. |
Öffentliche Typen
(since 6.9) | JsonFormat |
| enum | Type { Null, Bool, Double, String, Array, …, Undefined } |
Öffentliche Funktionen
| 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 |
Statische öffentliche Mitglieder
(since 6.9) QJsonValue | fromJson(QByteArrayView json, QJsonParseError *error = nullptr) |
| QJsonValue | fromVariant(const QVariant &variant) |
Verwandte Nicht-Mitglieder
| bool | operator!=(const QJsonValue &lhs, const QJsonValue &rhs) |
| bool | operator==(const QJsonValue &lhs, const QJsonValue &rhs) |
Ausführliche Beschreibung
Ein Wert in JSON kann einem von 6 Grundtypen angehören:
JSON ist ein Format zur Speicherung strukturierter Daten. Es verfügt über 6 grundlegende Datentypen:
- bool QJsonValue::Bool
- double QJsonValue::Double
- string QJsonValue::String
- array QJsonValue::Array
- object QJsonValue::Object
- null QJsonValue::Null
Ein Wert kann einen der oben genannten Datentypen darstellen. Darüber hinaus verfügt QJsonValue über ein spezielles Flag zur Darstellung undefinierter Werte. Dieses kann mit ` isUndefined()` abgefragt werden.
Der Typ des Werts kann mit ` type()` oder mit Zugriffsmethoden wie ` isBool()`, ` isString()` usw. abgefragt werden. Ebenso kann der Wert mithilfe von ` toBool()`, ` toString()` usw. in den darin gespeicherten Typ konvertiert werden.
Werte sind intern streng typisiert und versuchen – im Gegensatz zu ` QVariant ` – keine impliziten Typkonvertierungen. Das bedeutet, dass bei einer Konvertierung in einen Typ, der nicht im Wert gespeichert ist, ein standardmäßig konstruierter Rückgabewert zurückgegeben wird.
QJsonValueRef
QJsonValueRef ist eine Hilfsklasse für „ QJsonArray “ und „ QJsonObject “. Wenn Sie ein Objekt vom Typ „ QJsonValueRef “ erhalten, können Sie es so verwenden, als wäre es eine Referenz auf ein „QJsonValue“. Wenn Sie ihm einen Wert zuweisen, wirkt sich die Zuweisung auf das Element in „ QJsonArray “ oder „ QJsonObject “ aus, von dem Sie die Referenz erhalten haben.
Die folgenden Methoden geben „ QJsonValueRef “ zurück:
- QJsonArray::operator[](qsizetype i)
- QJsonObject::operator[](const QString & key) const
Siehe auch JSON-Unterstützung in Qt und Speichern und Laden eines Spiels.
Dokumentation zu Mitgliedstypen
[alias, since 6.9] QJsonValue::JsonFormat
Entspricht ` QJsonDocument::JsonFormat`.
Diese `typedef`-Definition wurde in Qt 6.9 eingeführt.
enum QJsonValue::Type
Diese Enumeration beschreibt den Typ des JSON-Werts.
| Konstante | Wert | Beschreibung |
|---|---|---|
QJsonValue::Null | 0x0 | Ein Null-Wert |
QJsonValue::Bool | 0x1 | Ein boolescher Wert. Verwenden Sie ` toBool()`, um ihn in einen booleschen Wert umzuwandeln. |
QJsonValue::Double | 0x2 | Ein numerischer Wert. Verwenden Sie ` toDouble()` zur Konvertierung in einen `double`-Wert oder ` toInteger()` zur Konvertierung in einen `qint64`-Wert. |
QJsonValue::String | 0x3 | Eine Zeichenkette. Verwenden Sie ` toString()` zur Konvertierung in einen ` QString`. |
QJsonValue::Array | 0x4 | Ein Array. Verwenden Sie ` toArray()` zur Konvertierung in einen ` QJsonArray`. |
QJsonValue::Object | 0x5 | Ein Objekt. Verwenden Sie ` toObject()` zur Konvertierung in einen ` QJsonObject`. |
QJsonValue::Undefined | 0x80 | Der Wert ist undefiniert. Dies wird in der Regel als Fehlerzustand zurückgegeben, wenn versucht wird, einen Wert außerhalb des Bereichs eines Arrays oder einen nicht vorhandenen Schlüssel in einem Objekt zu lesen. |
Dokumentation zu Mitgliedsfunktionen
QJsonValue::QJsonValue(QJsonValue::Type type = Null)
Erstellt einen QJsonValue vom Typ „ type “.
Standardmäßig wird ein Null-Wert erstellt.
QJsonValue::QJsonValue(QLatin1StringView s)
Erzeugt einen Wert vom Typ „String“ mit der Latin-1-Zeichenkette, wie sie von „ s “ dargestellt wird.
QJsonValue::QJsonValue(bool b)
Erzeugt einen Wert vom Typ „Bool“ mit dem Wert „ b “.
QJsonValue::QJsonValue(const QJsonArray &a)
Erzeugt einen Wert vom Typ Array mit dem Wert „ a “.
QJsonValue::QJsonValue(const QJsonObject &o)
Erzeugt einen Wert vom Typ „Object“ mit dem Wert „ o “.
QJsonValue::QJsonValue(const QString &s)
Erzeugt einen Wert vom Typ „String“ mit dem Wert „ s “.
QJsonValue::QJsonValue(const char *s)
Erzeugt einen Wert vom Typ „String“ mit dem Wert „ s “, wobei von einer UTF-8-Kodierung der Eingabe ausgegangen wird.
Sie können diesen Konstruktor deaktivieren, indem Sie bei der Kompilierung Ihrer Anwendungen „ QT_NO_CAST_FROM_ASCII “ definieren.
QJsonValue::QJsonValue(double v)
Erzeugt einen Wert vom Typ „Double“ mit dem Wert „ v “.
[noexcept, since 6.3] QJsonValue::QJsonValue(QJsonArray &&a)
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.3 eingeführt.
[noexcept, since 6.3] QJsonValue::QJsonValue(QJsonObject &&o)
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.3 eingeführt.
QJsonValue::QJsonValue(int v)
Erzeugt einen Wert vom Typ „Double“ mit dem Wert „ v “.
Dies ist eine überladene Funktion.
QJsonValue::QJsonValue(qint64 v)
Erzeugt einen Wert vom Typ „Double“ mit dem Wert „ v “.
Dieser wird intern als 64-Bit-Ganzzahl gespeichert und behält daher seine volle Genauigkeit bei, solange er mit ` toInteger()` abgerufen wird. Beim Abrufen des Werts mit ` toDouble()` geht jedoch Genauigkeit verloren, es sei denn, der Wert liegt zwischen ±2⁵³.
Dies ist eine überladene Funktion.
Siehe auch „ toInteger()“ und „ toDouble()“.
[noexcept] QJsonValue::QJsonValue(const QJsonValue &other)
Erstellt eine Kopie von „ other “.
[noexcept] QJsonValue::QJsonValue(QJsonValue &&other)
Erstellt ein `QJsonValue` aus ` other`.
[noexcept] QJsonValue::~QJsonValue()
Zerstört den Wert.
[static, since 6.9] QJsonValue QJsonValue::fromJson(QByteArrayView json, QJsonParseError *error = nullptr)
Analysiert json als UTF-8-kodierten JSON-Wert und erstellt daraus ein QJsonValue.
Gibt einen gültigen ` QJsonValue ` zurück, wenn das Parsen erfolgreich war. Bei einem Fehler ist der Rückgabewert ` undefined`, und die optionale Variable ` error ` enthält weitere Details zum Fehler.
Diese Funktion wurde in Qt 6.9 eingeführt.
Siehe auch ` QJsonParseError`, ` isUndefined()` und ` toJson()`.
[static] QJsonValue QJsonValue::fromVariant(const QVariant &variant)
Konvertiert „ variant “ in einen „ QJsonValue “ und gibt diesen zurück.
Bei der Konvertierung werden die Typen von ` QVariant ` wie folgt umgewandelt:
| Quelltyp | Zieltyp |
|---|---|
| QJsonValue::Null | |
| QJsonValue::Bool | |
| QJsonValue::Double | |
| QJsonValue::String | |
| QJsonValue::Array | |
| QJsonValue::Object | |
| QJsonValue::String. Bei der Konvertierung wird ` QUrl::toString()` mit dem Flag ` QUrl::FullyEncoded` verwendet, um maximale Kompatibilität beim Parsen der URL zu gewährleisten | |
| QJsonValue::String. Seit Qt 5.11 enthält die resultierende Zeichenkette keine Klammern mehr | |
| Unabhängig davon, welchen Typ ` QCborValue::toJsonValue()` zurückgibt. | |
| QJsonValue::Array. Siehe QCborValue::toJsonValue() für Konvertierungsbeschränkungen. | |
| QJsonValue::Map. Siehe „ QCborValue::toJsonValue()“ für Konvertierungsbeschränkungen und die „Stringifizierung“ von Map-Schlüsseln. |
Informationsverlust und andere Typen
QVariant können mehr Informationen enthalten, als in JSON darstellbar ist. Wenn der ` QVariant ` nicht zu den oben genannten Typen gehört, ist die Konvertierung nicht garantiert und kann sich in zukünftigen Versionen von Qt XML ändern, wie es beim UUID-Typ der Fall war. Der Code sollte darauf abzielen, keine anderen Typen als die oben aufgeführten zu verwenden.
Wenn ` QVariant::isNull()` `true` zurückgibt, wird ein Null-Wert ` QJsonValue ` zurückgegeben oder in die Liste bzw. das Objekt eingefügt, unabhängig vom Typ von ` QVariant`. Beachten Sie, dass die Verhaltensänderung in Qt 6.0, die sich auf ` QVariant::isNull()` auswirkt, auch diese Funktion betrifft.
Ein Gleitkommawert, der entweder unendlich oder NaN ist, wird in einen leeren JSON-Wert umgewandelt. Seit Qt 6.0 kann QJsonValue die volle Genauigkeit jeder 64-Bit-Ganzzahl mit Vorzeichen verlustfrei speichern, in früheren Versionen kann es jedoch bei Werten außerhalb des Bereichs von ±2^53 zu Genauigkeitsverlusten kommen. Vorzeichenlose 64-Bit-Werte, die größer oder gleich 2^63 sind, verlieren entweder an Genauigkeit oder werden fälschlicherweise als negative Werte interpretiert; daher sollte die Verwendung von ` QMetaType::ULongLong ` vermieden werden.
Bei anderen, oben nicht aufgeführten Typen wird eine Konvertierung in eine Zeichenkette versucht, in der Regel – jedoch nicht immer – durch Aufruf von ` QVariant::toString()`. Schlägt die Konvertierung fehl, wird der Wert durch einen leeren JSON-Wert ersetzt. Beachten Sie, dass „ QVariant::toString()“ für die meisten Typen ebenfalls verlustbehaftet ist. Wenn beispielsweise der übergebene „ QVariant “ rohe Byte-Array-Daten darstellt, wird empfohlen, diese vorab in Base64 (oder eine andere verlustfreie Kodierung) zu kodieren; andernfalls wird eine verlustbehaftete Konvertierung mit „ QString::fromUtf8()“ durchgeführt.
Bitte beachten Sie, dass sich die Konvertierungen über QVariant::toString() jederzeit ändern können. Sowohl QVariant als auch QJsonValue könnten in Zukunft um weitere Typen erweitert werden, was zu einer Änderung der Konvertierungsweise dieser Funktion führen würde.
Siehe auch toVariant() und QCborValue::fromVariant().
bool QJsonValue::isArray() const
Gibt „ true “ zurück, wenn der Wert ein Array enthält.
Siehe auch toArray().
bool QJsonValue::isBool() const
Gibt „ true “ zurück, wenn der Wert einen booleschen Wert enthält.
Siehe auch toBool().
bool QJsonValue::isDouble() const
Gibt „ true “ zurück, wenn der Wert einen Double-Wert enthält.
Siehe auch toDouble().
bool QJsonValue::isNull() const
Gibt „ true “ zurück, wenn der Wert null ist.
bool QJsonValue::isObject() const
Gibt „ true “ zurück, wenn der Wert ein Objekt enthält.
Siehe auch ` toObject()`.
bool QJsonValue::isString() const
Gibt „ true “ zurück, wenn der Wert eine Zeichenkette enthält.
Siehe auch toString().
bool QJsonValue::isUndefined() const
Gibt „ true “ zurück, wenn der Wert nicht definiert ist. Dies kann in bestimmten Fehlerfällen vorkommen, z. B. beim Zugriff auf einen nicht vorhandenen Schlüssel in einer „ QJsonObject “.
[noexcept] void QJsonValue::swap(QJsonValue &other)
Tauscht diesen Wert mit „ other “ aus. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.
QJsonArray QJsonValue::toArray(const QJsonArray &defaultValue) const
Wandelt den Wert in ein Array um und gibt ihn zurück.
Wenn „ type()“ kein Array ist, wird der Wert „ defaultValue “ zurückgegeben.
QJsonArray QJsonValue::toArray() const
Wandelt den Wert in ein Array um und gibt ihn zurück.
Wenn „ type()“ kein Array ist, wird ein „ QJsonArray()“ zurückgegeben.
Dies ist eine überladene Funktion.
bool QJsonValue::toBool(bool defaultValue = false) const
Wandelt den Wert in einen bool-Wert um und gibt ihn zurück.
Wenn „ type()“ kein bool ist, wird „ defaultValue “ zurückgegeben.
double QJsonValue::toDouble(double defaultValue = 0) const
Wandelt den Wert in einen Double-Wert um und gibt ihn zurück.
Wenn „ type()“ kein „Double“ ist, wird der Wert „ defaultValue “ zurückgegeben.
int QJsonValue::toInt(int defaultValue = 0) const
Wandelt den Wert in einen int-Wert um und gibt ihn zurück.
Wenn „ type()“ kein „Double“ ist oder der Wert keine ganze Zahl ist, wird die Ausnahme „ defaultValue “ zurückgegeben.
[since 6.0] qint64 QJsonValue::toInteger(qint64 defaultValue = 0) const
Wandelt den Wert in eine Ganzzahl um und gibt ihn zurück.
Wenn „ type()“ kein „Double“ ist oder der Wert keine als „qint64“ darstellbare ganze Zahl ist, wird der Fehler „ defaultValue “ zurückgegeben.
Diese Funktion wurde in Qt 6.0 eingeführt.
[since 6.9] QByteArray QJsonValue::toJson(QJsonValue::JsonFormat format = JsonFormat::Indented) const
Konvertiert den „ QJsonValue “ in einen UTF-8-kodierten JSON-Wert im angegebenen „ format “.
Diese Funktion wurde in Qt 6.9 eingeführt.
Siehe auch „ fromJson()“ und „ JsonFormat “.
QJsonObject QJsonValue::toObject(const QJsonObject &defaultValue) const
Wandelt den Wert in ein Objekt um und gibt ihn zurück.
Wenn „ type()“ kein „Object“ ist, wird „ defaultValue “ zurückgegeben.
QJsonObject QJsonValue::toObject() const
Wandelt den Wert in ein Objekt um und gibt ihn zurück.
Wenn „ type()“ nicht „Object“ ist, wird „ QJsonObject()“ zurückgegeben.
Dies ist eine überladene Funktion.
QString QJsonValue::toString() const
Wandelt den Wert in einen „ QString “ um und gibt ihn zurück.
Ist ` type()` kein String, wird ein `null`- QString -Wert zurückgegeben.
Siehe auch ` QString::isNull()`.
QString QJsonValue::toString(const QString &defaultValue) const
Wandelt den Wert in einen „ QString “ um und gibt ihn zurück.
Ist ` type()` kein String, wird der Wert ` defaultValue ` zurückgegeben.
Siehe auch ` toStringView()`.
[since 6.10] QAnyStringView QJsonValue::toStringView(QAnyStringView defaultValue = {}) const
Gibt den in diesem ` QJsonValue` gespeicherten Zeichenfolgenwert zurück, sofern dieser vom Typ ` string ` ist. Andernfalls wird ` defaultValue` zurückgegeben. Da ` QJsonValue ` Zeichenfolgen entweder im US-ASCII-, UTF-8- oder UTF-16-Format speichert, kann der zurückgegebene Wert ` QAnyStringView ` in einer dieser Kodierungen vorliegen.
Diese Funktion reserviert keinen Speicher. Der Rückgabewert ist bis zum nächsten Aufruf einer nicht-konstanten Mitgliedsfunktion für dieses Objekt gültig. Wenn dieses Objekt den Gültigkeitsbereich verlässt, ist der Rückgabewert bis zum nächsten Aufruf einer nicht-konstanten Mitgliedsfunktion für das übergeordnete JSON-Objekt oder -Array gültig.
Diese Funktion wurde in Qt 6.10 eingeführt.
Siehe auch ` toString()`.
QVariant QJsonValue::toVariant() const
Konvertiert den Wert in einen „ QVariant “ ().
Die „ QJsonValue “-Typen werden wie folgt konvertiert:
| Konstante | Beschreibung |
|---|---|
Null | QMetaType::Nullptr |
Bool | QMetaType::Bool |
Double | QMetaType::Double oder QMetaType::LongLong |
String | QString |
Array | QVariantList |
Object | QVariantMap |
Undefined | QVariant() |
Siehe auch fromVariant().
QJsonValue::Type QJsonValue::type() const
Gibt den Typ des Werts zurück.
Siehe auch „ QJsonValue::Type “.
[noexcept] QJsonValue &QJsonValue::operator=(QJsonValue &&other)
Mit „Move“ wird „ other “ diesem Wert zugewiesen.
[noexcept] QJsonValue &QJsonValue::operator=(const QJsonValue &other)
Weist diesem Objekt den in „ other “ gespeicherten Wert zu.
const QJsonValue QJsonValue::operator[](const QString &key) const
Gibt ein ` QJsonValue ` zurück, das den Wert für den Schlüssel ` key` darstellt.
Entspricht dem Aufruf von ` toObject()`.value(key).
Der zurückgegebene ` QJsonValue ` ist ` QJsonValue::Undefined `, wenn der Schlüssel nicht existiert oder wenn ` isObject()` den Wert „false“ zurückgibt.
Siehe auch „ QJsonValue“ , „ QJsonValue::isUndefined()“ und „ QJsonObject “.
const QJsonValue QJsonValue::operator[](qsizetype i) const
Gibt ein ` QJsonValue ` zurück, das den Wert für den Index ` i` darstellt.
Entspricht dem Aufruf von ` toArray()`.at(i).
Der zurückgegebene ` QJsonValue ` ist ` QJsonValue::Undefined`, wenn ` i ` außerhalb des zulässigen Bereichs liegt oder wenn ` isArray()` falsch ist.
Siehe auch „ QJsonValue“ , „ QJsonValue::isUndefined()“ und „ QJsonArray “.
const QJsonValue QJsonValue::operator[](QLatin1StringView key) const
Dies ist eine überladene Funktion.
const QJsonValue QJsonValue::operator[](QStringView key) const
Dies ist eine überladene Funktion.
Verwandte Nicht-Mitglieder
[noexcept] bool operator!=(const QJsonValue &lhs, const QJsonValue &rhs)
Gibt „ true “ zurück, wenn der Wert von „ lhs “ nicht mit dem Wert von „ rhs “ übereinstimmt; andernfalls „ false “.
[noexcept] bool operator==(const QJsonValue &lhs, const QJsonValue &rhs)
Gibt „ true “ zurück, wenn der Wert von „ lhs “ mit dem Wert von „ rhs “ übereinstimmt, andernfalls „ false “.
© 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.