diff options
-rw-r--r-- | src/corelib/json/qjsonvalue.cpp | 8 | ||||
-rw-r--r-- | src/corelib/kernel/qvariant.cpp | 1 | ||||
-rw-r--r-- | tests/auto/corelib/json/tst_qtjson.cpp | 7 |
3 files changed, 13 insertions, 3 deletions
diff --git a/src/corelib/json/qjsonvalue.cpp b/src/corelib/json/qjsonvalue.cpp index 5a906dda7b..4b52014db1 100644 --- a/src/corelib/json/qjsonvalue.cpp +++ b/src/corelib/json/qjsonvalue.cpp @@ -349,6 +349,12 @@ QJsonValue &QJsonValue::operator =(const QJsonValue &other) \row \li \list + \li QMetaType::Nullptr + \endlist + \li QJsonValue::Null + \row + \li + \list \li QMetaType::Bool \endlist \li QJsonValue::Bool @@ -393,6 +399,8 @@ QJsonValue &QJsonValue::operator =(const QJsonValue &other) QJsonValue QJsonValue::fromVariant(const QVariant &variant) { switch (variant.userType()) { + case QMetaType::Nullptr: + return QJsonValue(Null); case QVariant::Bool: return QJsonValue(variant.toBool()); case QVariant::Int: diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 72ae3b063f..ccfa7d0d38 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -3085,6 +3085,7 @@ bool QVariant::canConvert(int targetTypeId) const if (currentType == QMetaType::QJsonValue) { switch (targetTypeId) { + case QMetaType::Nullptr: case QMetaType::QString: case QMetaType::Bool: case QMetaType::Int: diff --git a/tests/auto/corelib/json/tst_qtjson.cpp b/tests/auto/corelib/json/tst_qtjson.cpp index 1194260efa..17892b44a2 100644 --- a/tests/auto/corelib/json/tst_qtjson.cpp +++ b/tests/auto/corelib/json/tst_qtjson.cpp @@ -1103,6 +1103,7 @@ void tst_QtJson::fromVariant() jsonObject["string"] = stringValue; jsonObject["array"] = jsonArray_variant; + QCOMPARE(QJsonValue::fromVariant(QVariant::fromValue(nullptr)), QJsonValue(QJsonValue::Null)); QCOMPARE(QJsonValue::fromVariant(QVariant(boolValue)), QJsonValue(boolValue)); QCOMPARE(QJsonValue::fromVariant(QVariant(intValue)), QJsonValue(intValue)); QCOMPARE(QJsonValue::fromVariant(QVariant(uintValue)), QJsonValue(static_cast<double>(uintValue))); @@ -1179,7 +1180,7 @@ void tst_QtJson::toVariantMap() array.append(true); array.append(999.); array.append(QLatin1String("string")); - array.append(QJsonValue()); + array.append(QJsonValue::Null); object.insert("Array", array); map = object.toVariantMap(); @@ -1203,12 +1204,12 @@ void tst_QtJson::toVariantHash() QVERIFY(hash.isEmpty()); object.insert("Key", QString("Value")); - object.insert("null", QJsonValue()); + object.insert("null", QJsonValue::Null); QJsonArray array; array.append(true); array.append(999.); array.append(QLatin1String("string")); - array.append(QJsonValue()); + array.append(QJsonValue::Null); object.insert("Array", array); hash = object.toVariantHash(); |