QJsonValue Class
Die Klasse QJsonValue kapselt einen Wert in JSON. Mehr...
Kopfzeile: | #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 von JSON Support in Qt und Implicitly Shared Classes.
Diese Klasse ist gleichsetzbar.
Diese Klasse ist gleichwertig mit QJsonValueConstRef und QJsonValueRef.
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Öffentliche Typen
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 |
QJsonObject | toObject(const QJsonObject &defaultValue) const |
QJsonObject | toObject() const |
QString | toString() const |
QString | toString(const QString &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
QJsonValue | fromVariant(const QVariant &variant) |
Verwandte Nicht-Mitglieder
bool | operator!=(const QJsonValue &lhs, const QJsonValue &rhs) |
bool | operator==(const QJsonValue &lhs, const QJsonValue &rhs) |
Detaillierte Beschreibung
Ein Wert in JSON kann einer von 6 Grundtypen sein:
JSON ist ein Format zur Speicherung strukturierter Daten. Es hat 6 grundlegende Datentypen:
- bool QJsonValue::Bool
- doppelt QJsonValue::Double
- Zeichenkette QJsonValue::String
- Array QJsonValue::Array
- Objekt QJsonValue::Object
- null QJsonValue::Null
Ein Wert kann jeden der oben genannten Datentypen darstellen. Darüber hinaus hat QJsonValue ein spezielles Flag, um undefinierte Werte darzustellen. Dieses kann mit isUndefined() abgefragt werden.
Der Typ des Wertes kann mit type() oder mit Accessoren wie isBool(), isString() usw. abgefragt werden. Ebenso kann der Wert mit toBool(), toString() usw. in den in ihm gespeicherten Typ konvertiert werden.
Werte sind intern streng typisiert und versuchen im Gegensatz zu QVariant nicht, implizite Typkonvertierungen vorzunehmen. Dies bedeutet, dass die Konvertierung in einen Typ, der nicht im Wert gespeichert ist, einen standardmäßig konstruierten Rückgabewert zurückgibt.
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 ein Verweis auf einen QJsonValue. Wenn Sie ihm etwas zuweisen, gilt die Zuweisung für das Element in QJsonArray oder QJsonObject, 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 der Mitgliedstypen
enum QJsonValue::Type
Diese Aufzählung beschreibt den Typ des JSON-Wertes.
Konstante | Wert | Beschreibung |
---|---|---|
QJsonValue::Null | 0x0 | Ein Nullwert |
QJsonValue::Bool | 0x1 | Ein boolescher Wert. Verwenden Sie toBool(), um in einen boolschen Wert zu konvertieren. |
QJsonValue::Double | 0x2 | Ein Zahlenwert. Verwenden Sie toDouble(), um in einen Double-Wert zu konvertieren, oder toInteger(), um in einen qint64-Wert zu konvertieren. |
QJsonValue::String | 0x3 | Eine Zeichenkette. Verwenden Sie toString(), um in QString zu konvertieren. |
QJsonValue::Array | 0x4 | Ein Array. Verwenden Sie toArray(), um in QJsonArray zu konvertieren. |
QJsonValue::Object | 0x5 | Ein Objekt. Verwenden Sie toObject(), um in QJsonObject zu konvertieren. |
QJsonValue::Undefined | 0x80 | Der Wert ist undefiniert. Dies wird normalerweise als Fehlerzustand zurückgegeben, wenn versucht wird, einen Wert außerhalb der Grenzen in einem Array oder einen nicht existierenden Schlüssel in einem Objekt zu lesen. |
Dokumentation der Mitgliedsfunktionen
QJsonValue::QJsonValue(QJsonValue::Type type = Null)
Erzeugt einen QJsonValue vom Typ type.
Standardmäßig wird ein Nullwert erstellt.
QJsonValue::QJsonValue(QLatin1StringView s)
Erzeugt einen Wert vom Typ String, wobei die Latin-1-Zeichenkette von s angezeigt 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 die UTF-8-Kodierung der Eingabe vorausgesetzt wird.
Sie können diesen Konstruktor deaktivieren, indem Sie QT_NO_CAST_FROM_ASCII
definieren, wenn Sie Ihre Anwendungen kompilieren.
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)
Dies ist eine überladene Funktion.
Erzeugt einen Wert vom Typ Double, mit dem Wert v.
QJsonValue::QJsonValue(qint64 v)
Dies ist eine überladene Funktion.
Erzeugt einen Wert vom Typ Double mit dem Wert v. HINWEIS: Die ganzzahligen Grenzen für IEEE 754-Daten mit doppelter Genauigkeit liegen bei 2^53 (-9007199254740992 bis +9007199254740992). Wenn Sie Werte außerhalb dieses Bereichs übergeben, ist mit einem Verlust an Genauigkeit zu rechnen.
[noexcept]
QJsonValue::QJsonValue(const QJsonValue &other)
Erzeugt eine Kopie von other.
[noexcept]
QJsonValue::QJsonValue(QJsonValue &&other)
Move-konstruiert einen QJsonValue aus other.
[noexcept]
QJsonValue::~QJsonValue()
Zerstört den Wert.
[static]
QJsonValue QJsonValue::fromVariant(const QVariant &variant)
Konvertiert variant in ein QJsonValue und gibt es zurück.
Die Konvertierung konvertiert QVariant Typen wie folgt:
Quell-Typ | Ziel-Typ |
---|---|
QJsonValue::Null | |
QJsonValue::Bool | |
QJsonValue::Double | |
QJsonValue::String | |
QJsonValue::Array | |
QJsonValue::Object | |
QJsonValue::String. Die Konvertierung verwendet QUrl::toString() mit dem Flag QUrl::FullyEncoded, um maximale Kompatibilität beim Parsen der URL zu gewährleisten | |
QJsonValue::String. Seit Qt 5.11 enthält der resultierende String keine geschweiften Klammern | |
Welcher Typ QCborValue::toJsonValue() auch immer zurückgibt. | |
QJsonValue::Array. Siehe QCborValue::toJsonValue() für Konvertierungseinschränkungen. | |
QJsonValue::Map. Siehe QCborValue::toJsonValue() für Konvertierungseinschränkungen und die "Stringifizierung" von Map-Schlüsseln. |
Verlust von Informationen und andere Typen
QVariant können mehr Informationen enthalten als in JSON darstellbar sind. Wenn QVariant nicht einer der oben genannten Typen ist, ist die Konvertierung nicht garantiert und kann sich in zukünftigen Versionen von Qt ändern, wie es bei UUID der Fall war. Code sollte versuchen, keine anderen Typen als die oben aufgeführten zu verwenden.
Wenn QVariant::isNull() den Wert true zurückgibt, wird eine Null QJsonValue zurückgegeben oder in die Liste oder das Objekt eingefügt, unabhängig von dem Typ, der von QVariant übertragen wird. Beachten Sie, dass die Verhaltensänderung in Qt 6.0, die QVariant::isNull() betrifft, auch diese Funktion betrifft.
Ein Fließkommawert, der entweder eine Unendlichkeit oder NaN ist, wird in einen Null-JSON-Wert umgewandelt. Seit Qt 6.0 kann QJsonValue die volle Genauigkeit jeder vorzeichenbehafteten 64-Bit-Ganzzahl ohne Verlust speichern, aber in früheren Versionen können Werte außerhalb des Bereichs von ±2^53 an Genauigkeit verlieren. 64-Bit-Werte ohne Vorzeichen, die größer oder gleich 2^63 sind, verlieren entweder an Genauigkeit oder werden zu negativen Werten, so dass QMetaType::ULongLong vermieden werden sollte.
Bei anderen, oben nicht aufgeführten Typen wird eine Umwandlung in eine Zeichenkette versucht, normalerweise, aber nicht immer, durch den Aufruf von QVariant::toString(). Schlägt die Umwandlung fehl, wird der Wert durch einen Null-JSON-Wert ersetzt. Beachten Sie, dass QVariant::toString() für die meisten Typen ebenfalls verlustbehaftet ist. Wenn die übergebene QVariant beispielsweise rohe Byte-Array-Daten repräsentiert, wird empfohlen, sie in Base64 (oder eine andere verlustfreie Kodierung) vorzukodieren, andernfalls wird eine verlustbehaftete Konvertierung mit QString::fromUtf8() verwendet.
Bitte beachten Sie, dass die Konvertierungen über QVariant::toString() jederzeit geändert werden können. Sowohl QVariant als auch QJsonValue können in Zukunft erweitert werden, um mehr Typen zu unterstützen, was zu einer Änderung der Art und Weise führen wird, wie diese Funktion Konvertierungen durchführt.
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 ein Double 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 undefiniert 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 nie fehl.
QJsonArray QJsonValue::toArray(const QJsonArray &defaultValue) const
Konvertiert den Wert in ein Array und gibt es zurück.
Wenn type() nicht Array ist, wird defaultValue zurückgegeben.
QJsonArray QJsonValue::toArray() const
Dies ist eine überladene Funktion.
Konvertiert den Wert in ein Array und gibt es zurück.
Wenn type() nicht Array ist, wird QJsonArray() zurückgegeben.
bool QJsonValue::toBool(bool defaultValue = false) const
Wandelt den Wert in einen bool-Wert um und gibt ihn zurück.
Wenn type() nicht bool ist, wird der Wert defaultValue zurückgegeben.
double QJsonValue::toDouble(double defaultValue = 0) const
Wandelt den Wert in einen Double um und gibt ihn zurück.
Wenn type() nicht Double ist, wird defaultValue zurückgegeben.
int QJsonValue::toInt(int defaultValue = 0) const
Wandelt den Wert in einen int um und gibt ihn zurück.
Wenn type() nicht Double ist oder der Wert keine ganze Zahl ist, wird defaultValue zurückgegeben.
[since 6.0]
qint64 QJsonValue::toInteger(qint64 defaultValue = 0) const
Wandelt den Wert in eine ganze Zahl um und gibt ihn zurück.
Wenn type() nicht Double ist oder der Wert keine ganze Zahl ist, die als qint64 dargestellt werden kann, wird defaultValue zurückgegeben.
Diese Funktion wurde in Qt 6.0 eingeführt.
QJsonObject QJsonValue::toObject(const QJsonObject &defaultValue) const
Wandelt den Wert in ein Objekt um und gibt es zurück.
Wenn type() nicht Object ist, wird defaultValue zurückgegeben.
QJsonObject QJsonValue::toObject() const
Dies ist eine überladene Funktion.
Sie wandelt den Wert in ein Objekt um und gibt es zurück.
Wenn type() nicht Object ist, wird QJsonObject() zurückgegeben.
QString QJsonValue::toString() const
Konvertiert den Wert in ein QString und gibt ihn zurück.
Wenn type() nicht String ist, wird QString als Null zurückgegeben.
Siehe auch QString::isNull().
QString QJsonValue::toString(const QString &defaultValue) const
Konvertiert den Wert in ein QString und gibt ihn zurück.
Wenn type() nicht String ist, wird defaultValue zurückgegeben.
QVariant QJsonValue::toVariant() const
Konvertiert den Wert in eine 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 Wertes zurück.
Siehe auch QJsonValue::Type.
[noexcept]
QJsonValue &QJsonValue::operator=(QJsonValue &&other)
Verschieben - weist other diesem Wert zu.
[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() falsch ist.
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.
Äquivalent zum Aufruf von toArray().at(i).
Der zurückgegebene QJsonValue ist QJsonValue::Undefined, wenn i außerhalb der Grenzen 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 lhs nicht gleich dem Wert rhs ist, andernfalls false
.
[noexcept]
bool operator==(const QJsonValue &lhs, const QJsonValue &rhs)
Gibt true
zurück, wenn der Wert lhs gleich dem Wert rhs ist, andernfalls false
.
© 2025 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.