Handle QVariantHash in QJsonDocument::fromVariant
It absence is just an oversight. The patch also adds test for the valid inputs of the method. [ChangeLog][QtCore][QJsonDocument] fromVariant can now take a QVariantHash argument. Task-number: QTBUG-39751 Change-Id: I7e051413f930023db3cbb81452e77c56a7ceffe8 Reviewed-by: Lars Knoll <lars.knoll@qt.io>bb10
parent
69b37630d1
commit
690d6be542
|
|
@ -260,7 +260,7 @@ QJsonDocument QJsonDocument::fromBinaryData(const QByteArray &data, DataValidati
|
|||
Creates a QJsonDocument from the QVariant \a variant.
|
||||
|
||||
If the \a variant contains any other type than a QVariantMap,
|
||||
QVariantList or QStringList, the returned document
|
||||
QVariantHash, QVariantList or QStringList, the returned document
|
||||
document is invalid.
|
||||
|
||||
\sa toVariant()
|
||||
|
|
@ -270,6 +270,8 @@ QJsonDocument QJsonDocument::fromVariant(const QVariant &variant)
|
|||
QJsonDocument doc;
|
||||
if (variant.type() == QVariant::Map) {
|
||||
doc.setObject(QJsonObject::fromVariantMap(variant.toMap()));
|
||||
} else if (variant.type() == QVariant::Hash) {
|
||||
doc.setObject(QJsonObject::fromVariantHash(variant.toHash()));
|
||||
} else if (variant.type() == QVariant::List) {
|
||||
doc.setArray(QJsonArray::fromVariantList(variant.toList()));
|
||||
} else if (variant.type() == QVariant::StringList) {
|
||||
|
|
|
|||
|
|
@ -137,6 +137,8 @@ private Q_SLOTS:
|
|||
void garbageAtEnd();
|
||||
|
||||
void removeNonLatinKey();
|
||||
void documentFromVariant();
|
||||
|
||||
private:
|
||||
QString testDataDir;
|
||||
};
|
||||
|
|
@ -2788,5 +2790,43 @@ void tst_QtJson::removeNonLatinKey()
|
|||
QVERIFY(restoredObject.contains(nonLatinKeyName));
|
||||
}
|
||||
|
||||
void tst_QtJson::documentFromVariant()
|
||||
{
|
||||
// Test the valid forms of QJsonDocument::fromVariant.
|
||||
|
||||
QString string = QStringLiteral("value");
|
||||
|
||||
QStringList strList;
|
||||
strList.append(string);
|
||||
|
||||
QJsonDocument da1 = QJsonDocument::fromVariant(QVariant(strList));
|
||||
QVERIFY(da1.isArray());
|
||||
|
||||
QVariantList list;
|
||||
list.append(string);
|
||||
|
||||
QJsonDocument da2 = QJsonDocument::fromVariant(list);
|
||||
QVERIFY(da2.isArray());
|
||||
|
||||
// As JSON arrays they should be equal.
|
||||
QCOMPARE(da1.array(), da2.array());
|
||||
|
||||
|
||||
QMap <QString, QVariant> map;
|
||||
map["key"] = string;
|
||||
|
||||
QJsonDocument do1 = QJsonDocument::fromVariant(QVariant(map));
|
||||
QVERIFY(do1.isObject());
|
||||
|
||||
QHash <QString, QVariant> hash;
|
||||
hash["key"] = string;
|
||||
|
||||
QJsonDocument do2 = QJsonDocument::fromVariant(QVariant(hash));
|
||||
QVERIFY(do2.isObject());
|
||||
|
||||
// As JSON objects they should be equal.
|
||||
QCOMPARE(do1.object(), do2.object());
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QtJson)
|
||||
#include "tst_qtjson.moc"
|
||||
|
|
|
|||
Loading…
Reference in New Issue