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

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)
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:

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:

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.

KonstanteWertBeschreibung
QJsonValue::Null0x0Ein Nullwert
QJsonValue::Bool0x1Ein boolescher Wert. Verwenden Sie toBool(), um in einen boolschen Wert zu konvertieren.
QJsonValue::Double0x2Ein Zahlenwert. Verwenden Sie toDouble(), um in einen Double-Wert zu konvertieren, oder toInteger(), um in einen qint64-Wert zu konvertieren.
QJsonValue::String0x3Eine Zeichenkette. Verwenden Sie toString(), um in QString zu konvertieren.
QJsonValue::Array0x4Ein Array. Verwenden Sie toArray(), um in QJsonArray zu konvertieren.
QJsonValue::Object0x5Ein Objekt. Verwenden Sie toObject(), um in QJsonObject zu konvertieren.
QJsonValue::Undefined0x80Der 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-TypZiel-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:

KonstanteBeschreibung
NullQMetaType::Nullptr
BoolQMetaType::Bool
DoubleQMetaType::Double oder QMetaType::LongLong
StringQString
ArrayQVariantList
ObjectQVariantMap
UndefinedQVariant()

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.