diff --git a/src/corelib/json/qjsonvalue.h b/src/corelib/json/qjsonvalue.h index fe028990c0..97e20b574d 100644 --- a/src/corelib/json/qjsonvalue.h +++ b/src/corelib/json/qjsonvalue.h @@ -170,6 +170,12 @@ public: QJsonArray toArray() const; QJsonObject toObject() const; + // ### Qt 6: Add default values + inline bool toBool(bool defaultValue) const { return toValue().toBool(defaultValue); } + inline int toInt(int defaultValue) const { return toValue().toInt(defaultValue); } + inline double toDouble(double defaultValue) const { return toValue().toDouble(defaultValue); } + inline QString toString(const QString &defaultValue) const { return toValue().toString(defaultValue); } + inline bool operator==(const QJsonValue &other) const { return toValue() == other; } inline bool operator!=(const QJsonValue &other) const { return toValue() != other; } diff --git a/tests/auto/corelib/json/tst_qtjson.cpp b/tests/auto/corelib/json/tst_qtjson.cpp index a17fe7561a..8d8a3d7e0e 100644 --- a/tests/auto/corelib/json/tst_qtjson.cpp +++ b/tests/auto/corelib/json/tst_qtjson.cpp @@ -132,6 +132,7 @@ private Q_SLOTS: void testTrailingComma(); void testDetachBug(); + void testJsonValueRefDefault(); void valueEquals(); @@ -2425,5 +2426,22 @@ void tst_QtJson::longStrings() } } +void tst_QtJson::testJsonValueRefDefault() +{ + QJsonObject empty; + + QCOMPARE(empty["n/a"].toString(), QString()); + QCOMPARE(empty["n/a"].toString("default"), QStringLiteral("default")); + + QCOMPARE(empty["n/a"].toBool(), false); + QCOMPARE(empty["n/a"].toBool(true), true); + + QCOMPARE(empty["n/a"].toInt(), 0); + QCOMPARE(empty["n/a"].toInt(42), 42); + + QCOMPARE(empty["n/a"].toDouble(), 0.0); + QCOMPARE(empty["n/a"].toDouble(42.0), 42.0); +} + QTEST_MAIN(tst_QtJson) #include "tst_qtjson.moc"