CBOR-Unterstützung in Qt

Qt bietet Unterstützung für den Umgang mit CBOR-Daten. CBOR ist ein Binärformat zum Speichern von Daten, das eine Obermenge der in JSON verfügbaren Typen enthält, aber kompakter ist.

Die CBOR-Unterstützung in Qt bietet eine einfach zu verwendende C++-API zum Parsen, Ändern und Speichern von CBOR-Daten.

Weitere Einzelheiten über das CBOR-Datenformat finden Sie in RFC 7049.

Überblick

CBOR ist ein Format zur Speicherung strukturierter Daten. Es hat drei Gruppen von eingebauten Typen:

  • Grundtypen: Ganzzahlen, Fließkommazahlen, Boolesche Werte, Null, usw.
  • String-ähnliche Typen: Strings und Byte-Arrays
  • Container: Arrays und Maps

Darüber hinaus kann CBOR ein "Tag" hinzufügen, um die Bedeutung des Typs zu erweitern. Die Containertypen können Basistypen, zeichenkettenähnliche Typen und Container enthalten.

Die CBOR-Klassen

Die Klasse QCborValue

Die Klasse QCborValue repräsentiert jeden CBOR-Typ. Sie verfügt auch über eine einfache API zum Lesen und Schreiben von QCborStreamReader und QCborStreamWriter Objekten sowie zur Manipulation solcher Objekte im Speicher mit Hilfe von QCborArray und QCborMap. Die CborValue-API ist eine Vereinfachung des vollständigen CBOR-Datentyps und stellt alle Ganzzahlen immer als qint64 und alle Gleitkommazahlen als double dar. Das bedeutet, dass QCborValue nicht in der Lage ist, CBOR-Ganzzahlwerte außerhalb des Bereichs von qint64 (-2^63 bis 2^63-1) darzustellen. Bei der Erstellung eines CBOR-Streams kann QCborValue::toCbor() so konfiguriert werden, dass versucht wird, die kürzeren einfach- und halbpräzisen Fließkommadarstellungen zu schreiben.

Die Klasse QCborArray

Die Klasse QCborArray wird verwendet, um ein Array von QCborValue Objekten zu speichern. Ein QCborValue Objekt kann ein QCborArray Objekt enthalten. Sie verfügt über Funktionen zur Konvertierung nach und von QVariantList, QStringList, QJsonArray.

Die QCborMap-Klasse

Die Klasse QCborMap wird verwendet, um eine Karte von QCborValue Objekten zu speichern. Ein QCborValue Objekt kann ein QCborMap Objekt enthalten. Sie hat Funktionen für die Konvertierung von und nach QVariantMap, QVariantHash und QJsonObject, kann aber Schlüssel jedes Typs haben, nicht nur QString.

Die Klasse QCborStreamReader

Die Klasse QCborStreamReader ist eine Low-Level-API zum Lesen von CBOR-Daten aus einem QIODevice, einem QByteArray oder einem Zeiger auf den Speicher. Sie hat eine ähnliche API wie die Klasse QXmlStreamReader.

Die Klasse QCborStreamWriter

Die Klasse QCborStreamWriter ist eine Low-Level-API zum Schreiben von CBOR-Daten in eine QIODevice oder eine QByteArray. Sie hat eine ähnliche API wie die Klasse QXmlStreamWriter.

Siehe auch Parsing und Anzeige von CBOR-Daten, Serialisierungskonverter und Speichern und Laden eines Spiels.

QCborArray

Wird verwendet, um ein Array von CBOR-Elementen zu speichern

QCborArray::ConstIterator

Die Klasse QCborArray::ConstIterator bietet einen STL-ähnlichen Konst-Iterator für QCborArray

QCborArray::Iterator

QCborArray::Iterator Klasse bietet einen STL-ähnlichen nonconst Iterator für QCborArray

QCborMap

Wird verwendet, um einen assoziativen Container in CBOR darstellbar zu halten

QCborMap::ConstIterator

QCborMap::ConstIterator Klasse bietet einen STL-Stil const Iterator für QCborMap

QCborMap::Iterator

QCborMap::Iterator Klasse bietet einen STL-ähnlichen non-const Iterator für QCborMap

QCborParserError

Wird von QCborValue verwendet, um einen Parsing-Fehler zu melden

QCborStreamReader

Einfacher CBOR Stream Decoder, der entweder mit einem QByteArray oder QIODevice arbeitet

QCborStreamWriter

Einfacher CBOR-Encoder, der mit einem Einweg-Stream arbeitet

QCborValue

Verkapselt einen Wert in CBOR

© 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.