Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qjsondocument.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:critical reason:data-parser
4
5#ifndef QJSONDOCUMENT_H
6#define QJSONDOCUMENT_H
7
8#include <QtCore/qcompare.h>
9#include <QtCore/qjsonparseerror.h>
10#if (QT_VERSION >= QT_VERSION_CHECK(7, 0, 0)) || defined(QT_BOOTSTRAPPED)
11#include <QtCore/qjsonvalue.h>
12#endif
13#include <QtCore/qlatin1stringview.h>
14#include <QtCore/qscopedpointer.h>
15#include <QtCore/qstringview.h>
16
17#include <memory>
18
20
21class QDebug;
22class QCborValue;
23class QJsonArray;
24class QJsonObject;
25class QJsonValue;
26
27namespace QJsonPrivate { class Parser; }
28
30class Q_CORE_EXPORT QJsonDocument
31{
32public:
33#ifdef Q_LITTLE_ENDIAN
34 static const uint BinaryFormatTag = ('q') | ('b' << 8) | ('j' << 16) | ('s' << 24);
35#else
36 static const uint BinaryFormatTag = ('q' << 24) | ('b' << 16) | ('j' << 8) | ('s');
37#endif
38
39 QJsonDocument();
40 explicit QJsonDocument(const QJsonObject &object);
41 explicit QJsonDocument(const QJsonArray &array);
42 ~QJsonDocument();
43
44 QJsonDocument(const QJsonDocument &other);
45 QJsonDocument &operator =(const QJsonDocument &other);
46
47 QJsonDocument(QJsonDocument &&other) noexcept;
48
49 QJsonDocument &operator =(QJsonDocument &&other) noexcept
50 {
51 swap(other);
52 return *this;
53 }
54
55 void swap(QJsonDocument &other) noexcept;
56
57 static QJsonDocument fromVariant(const QVariant &variant);
58 QVariant toVariant() const;
59
60#if (QT_VERSION < QT_VERSION_CHECK(7, 0, 0)) && !defined(QT_BOOTSTRAPPED)
61 enum JsonFormat {
62 Indented,
63 Compact
64 };
65#else
66 using JsonFormat = QJsonValue::JsonFormat;
67# ifdef __cpp_using_enum
68 using enum QJsonValue::JsonFormat;
69# else
70 // keep in sync with qjsonvalue.h
71 static constexpr auto Indented = JsonFormat::Indented;
72 static constexpr auto Compact = JsonFormat::Compact;
73# endif
74#endif
75
76 static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = nullptr);
77
78 QByteArray toJson(JsonFormat format = JsonFormat::Indented) const;
79
80 bool isEmpty() const;
81 bool isArray() const;
82 bool isObject() const;
83
84 QJsonObject object() const;
85 QJsonArray array() const;
86
87 void setObject(const QJsonObject &object);
88 void setArray(const QJsonArray &array);
89
90 const QJsonValue operator[](const QString &key) const;
91 const QJsonValue operator[](QStringView key) const;
92 const QJsonValue operator[](QLatin1StringView key) const;
93 const QJsonValue operator[](qsizetype i) const;
94#if QT_CORE_REMOVED_SINCE(6, 8)
95 bool operator==(const QJsonDocument &other) const;
96 bool operator!=(const QJsonDocument &other) const { return !operator==(other); }
97#endif
98 bool isNull() const;
99
100private:
101 friend class QJsonValue;
102 friend class QJsonPrivate::Parser;
103 friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonDocument &);
104 friend Q_CORE_EXPORT bool comparesEqual(const QJsonDocument &lhs,
105 const QJsonDocument &rhs) noexcept;
106 Q_DECLARE_EQUALITY_COMPARABLE(QJsonDocument)
107
108 QJsonDocument(const QCborValue &data);
109
110 std::unique_ptr<QJsonDocumentPrivate> d;
111};
112
114
115#if !defined(QT_NO_DEBUG_STREAM)
116Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonDocument &);
117#endif
118
119#ifndef QT_NO_DATASTREAM
120Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QJsonDocument &);
121Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QJsonDocument &);
122#endif
123
124QT_END_NAMESPACE
125
126#endif // QJSONDOCUMENT_H
The QAssociativeIterable class is an iterable interface for an associative container in a QVariant.
\inmodule QtCore\reentrant
Definition qcborarray.h:21
\inmodule QtCore\reentrant
Definition qcbormap.h:35
bool isBool() const
Definition qcborvalue.h:321
QCborArray toArray(const QCborArray &a) const
Definition qcborarray.h:384
QCborMap toMap(const QCborMap &m) const
Definition qcbormap.h:495
QCborMap toMap() const
Definition qcbormap.h:490
QVariant toVariant() const
Definition qcborvalue.h:385
bool isInteger() const
Definition qcborvalue.h:313
bool isDateTime() const
Definition qcborvalue.h:325
bool isDouble() const
Definition qcborvalue.h:324
bool isString() const
Definition qcborvalue.h:315
QCborValueConstRef & operator=(const QCborValueConstRef &)=delete
bool isUrl() const
Definition qcborvalue.h:326
bool isNull() const
Definition qcborvalue.h:322
QCborArray toArray() const
Definition qcborarray.h:379
bool isContainer() const
Definition qcborvalue.h:330
bool toBool(bool defaultValue=false) const
Definition qcborvalue.h:346
QCborValue taggedValue(const QCborValue &defaultValue=QCborValue()) const
Definition qcborvalue.h:341
bool isByteArray() const
Definition qcborvalue.h:314
QCborSimpleType toSimpleType(QCborSimpleType defaultValue=QCborSimpleType::Undefined) const
Definition qcborvalue.h:334
bool isMap() const
Definition qcborvalue.h:317
bool isSimpleType() const
Definition qcborvalue.h:331
bool isRegularExpression() const
Definition qcborvalue.h:327
bool isUndefined() const
Definition qcborvalue.h:323
QCborValue::Type type() const
Definition qcborvalue.h:312
bool isInvalid() const
Definition qcborvalue.h:329
QCborValueConstRef(const QCborValueConstRef &)=default
bool isUuid() const
Definition qcborvalue.h:328
QCborTag tag(QCborTag defaultValue=QCborTag(-1)) const
Definition qcborvalue.h:339
constexpr QCborValueConstRef()
Definition qcborvalue.h:452
QByteArray toByteArray(const QByteArray &defaultValue={}) const
Definition qcborvalue.h:351
qint64 toInteger(qint64 defaultValue=0) const
Definition qcborvalue.h:344
bool isSimpleType(QCborSimpleType st) const
Definition qcborvalue.h:332
bool isTrue() const
Definition qcborvalue.h:320
QUuid toUuid(const QUuid &defaultValue={}) const
Definition qcborvalue.h:368
QCborContainerPrivate * d
Definition qcborvalue.h:456
bool isFalse() const
Definition qcborvalue.h:319
QAnyStringView toStringView(QAnyStringView defaultValue={}) const
Definition qcborvalue.h:355
friend bool comparesEqual(const QCborValueConstRef &lhs, const QCborValueConstRef &rhs) noexcept
Definition qcborvalue.h:409
bool isTag() const
Definition qcborvalue.h:318
friend bool comparesEqual(const QCborValueConstRef &lhs, const QCborValue &rhs) noexcept
Definition qcborvalue.h:425
QString toDiagnosticNotation(QCborValue::DiagnosticNotationOptions opt=QCborValue::Compact) const
Definition qcborvalue.h:395
bool isArray() const
Definition qcborvalue.h:316
int compare(const QCborValue &other) const
Definition qcborvalue.h:382
friend Qt::strong_ordering compareThreeWay(const QCborValueConstRef &lhs, const QCborValue &rhs) noexcept
Definition qcborvalue.h:430
operator QCborValue() const
Definition qcborvalue.h:310
friend Qt::strong_ordering compareThreeWay(const QCborValueConstRef &lhs, const QCborValueConstRef &rhs) noexcept
Definition qcborvalue.h:414
constexpr QCborValueConstRef(QCborContainerPrivate *dd, qsizetype ii)
Definition qcborvalue.h:453
QCborValue concrete() const noexcept
Definition qcborvalue.h:404
QString toString(const QString &defaultValue={}) const
Definition qcborvalue.h:353
QUrl toUrl(const QUrl &defaultValue={}) const
Definition qcborvalue.h:362
QJsonValue toJsonValue() const
double toDouble(double defaultValue=0) const
Definition qcborvalue.h:348
\inmodule QtCore\reentrant
Definition qcborvalue.h:48
\inmodule QtCore\reentrant
Definition qdatastream.h:50
\inmodule QtCore
Definition qhash.h:837
\inmodule QtCore\reentrant
Definition qjsonarray.h:19
\inmodule QtCore\reentrant
Definition qlist.h:80
void remove(int from, int to)
bool insertIfNotContains(Key k, const T &f)
bool contains(Key k) const
const T * function(Key k) const
\inmodule QtCore\reentrant
Definition qpoint.h:231
\inmodule QtCore\reentrant
Definition qpoint.h:29
The QSequentialIterable class is an iterable interface for a container in a QVariant.
LegacyRegisterOp legacyRegisterOp
Definition qmetatype.h:312
\keyword 16-bit Floating Point Support\inmodule QtCore \inheaderfile QFloat16
Definition qfloat16.h:48
QMutableListIterator< QByteArray > QMutableByteArrayListIterator
Q_DECLARE_TYPEINFO(QByteArrayView, Q_PRIMITIVE_TYPE)
QCborSimpleType
Definition qcborcommon.h:29
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2568
QList< QVariant > QVariantList
Definition qjsonarray.h:16
#define qCWarning(category,...)
#define Q_STATIC_LOGGING_CATEGORY(name,...)
#define CONVERT_CBOR_AND_JSON(To)
#define NS(x)
Definition qmetatype.cpp:70
#define QMETATYPE_CONVERTER_ASSIGN_QCHAR(From)
#define QMETATYPE_CONVERTER_ASSIGN_DOUBLE(To, From)
#define INTEGRAL_CONVERTER(To)
static bool tryConvertBuiltinTypes(const void *from, int fromTypeId, void *to, int toTypeId)
#define QMETATYPE_CONVERTER_ASSIGN_NUMBER(To, From)
static bool qIntegerConversionFromFPHelper(From from, To *to)
#define FLOAT_CONVERTER(To)
#define QT_FOR_EACH_STATIC_CORE_POINTER(F)
Definition qmetatype.h:137
#define QT_FOR_EACH_STATIC_PRIMITIVE_TYPE(F)
Definition qmetatype.h:70
#define QT_FOR_EACH_STATIC_PRIMITIVE_NON_VOID_TYPE(F)
Definition qmetatype.h:50
#define QT_FOR_EACH_STATIC_CORE_TEMPLATE(F)
Definition qmetatype.h:151
#define QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(F)
Definition qmetatype.h:74
#define QT_IMPL_METATYPE_EXTERN_TAGGED(TYPE, TAG)
Definition qmetatype.h:1365
#define QT_FOR_EACH_STATIC_CORE_CLASS(F)
Definition qmetatype.h:105
#define QT_FOR_EACH_STATIC_ALIAS_TYPE(F)
Definition qmetatype.h:193
#define QT_FOR_EACH_STATIC_TYPE(F)
Definition qmetatype.h:223
#define QMETATYPE_CONVERTER(To, From, assign_and_return)
Definition qmetatype_p.h:23
#define QMETATYPE_CONVERTER_ASSIGN(To, From)
Definition qmetatype_p.h:34
#define QStringLiteral(str)
Definition qstring.h:1826
\inmodule QtCore\reentrant
Definition qcborvalue.h:38
QString errorString() const
\variable QCborParserError::offset
Definition qcborvalue.h:42
QCborError error
Definition qcborvalue.h:40
QListSpecialMethods & operator=(const QListSpecialMethods &)=default
QListSpecialMethods(QListSpecialMethods &&)=default
QListSpecialMethods & operator=(QListSpecialMethods &&)=default
QListSpecialMethods(const QListSpecialMethods &)=default
QByteArray join(QByteArrayView sep={}) const
static T value(const Iterator &it)
Definition qcbormap.h:27
static T value(Iterator &it)
Definition qcbormap.h:28
static QCborValueConstRef key(Iterator &it)
Definition qcbormap.h:26
static QCborValueConstRef key(const Iterator &it)
Definition qcbormap.h:25