diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2018-01-25 15:25:35 -0800 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2018-07-04 03:04:17 +0000 |
commit | fcb0f68e77bb69544f0ae310baffd3ceff8a9e5d (patch) | |
tree | afd7fe27c11d39d12c3bc2d0eefd385e55081589 /src/corelib/serialization | |
parent | 6c64a9b2d29d5de054d1d8ccec2050c28767c10c (diff) |
CBOR: Complete the conversions between CBOR, JSON and Qt meta types
Change-Id: I56b444f9d6274221a3b7fffd150d3130db6ef1a0
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/serialization')
-rw-r--r-- | src/corelib/serialization/qjsoncbor.cpp | 11 | ||||
-rw-r--r-- | src/corelib/serialization/qjsonvalue.cpp | 30 |
2 files changed, 38 insertions, 3 deletions
diff --git a/src/corelib/serialization/qjsoncbor.cpp b/src/corelib/serialization/qjsoncbor.cpp index ef6acbcbf0..46d2555554 100644 --- a/src/corelib/serialization/qjsoncbor.cpp +++ b/src/corelib/serialization/qjsoncbor.cpp @@ -728,14 +728,19 @@ QCborValue QCborValue::fromVariant(const QVariant &variant) return QCborArray::fromJsonArray(doc.array()); return QCborMap::fromJsonObject(doc.object()); } + case QMetaType::QCborValue: + return variant.value<QCborValue>(); + case QMetaType::QCborArray: + return variant.value<QCborArray>(); + case QMetaType::QCborMap: + return variant.value<QCborMap>(); + case QMetaType::QCborSimpleType: + return variant.value<QCborSimpleType>(); #endif default: break; } - if (variant.userType() == qMetaTypeId<QCborSimpleType>()) - return variant.value<QCborSimpleType>(); - if (variant.isNull()) return QCborValue(nullptr); diff --git a/src/corelib/serialization/qjsonvalue.cpp b/src/corelib/serialization/qjsonvalue.cpp index b8051d6228..3c5b0a0e02 100644 --- a/src/corelib/serialization/qjsonvalue.cpp +++ b/src/corelib/serialization/qjsonvalue.cpp @@ -46,6 +46,11 @@ #include <qstringlist.h> #include <qdebug.h> +#ifndef QT_BOOTSTRAPPED +# include <qcborarray.h> +# include <qcbormap.h> +#endif + #include "qjson_p.h" QT_BEGIN_NAMESPACE @@ -423,6 +428,25 @@ QJsonValue &QJsonValue::operator =(const QJsonValue &other) \li QMetaType::QUuid \endlist \li QJsonValue::String. Since Qt 5.11, the resulting string will not include braces + \row + \li + \list + \li QMetaType::QCborValue + \endlist + \li Whichever type QCborValue::toJsonValue() returns. + \row + \li + \list + \li QMetaType::QCborArray + \endlist + \li QJsonValue::Array. See QCborValue::toJsonValue() for conversion restrictions. + \row + \li + \list + \li QMetaType::QCborMap + \endlist + \li QJsonValue::Map. See QCborValue::toJsonValue() for conversion restrictions and the + "stringification" of map keys. \endtable For all other QVariant types a conversion to a QString will be attempted. If the returned string @@ -469,6 +493,12 @@ QJsonValue QJsonValue::fromVariant(const QVariant &variant) QJsonDocument doc = variant.toJsonDocument(); return doc.isArray() ? QJsonValue(doc.array()) : QJsonValue(doc.object()); } + case QMetaType::QCborValue: + return variant.value<QCborValue>().toJsonValue(); + case QMetaType::QCborArray: + return variant.value<QCborArray>().toJsonArray(); + case QMetaType::QCborMap: + return variant.value<QCborMap>().toJsonObject(); #endif default: break; |