diff options
Diffstat (limited to 'src/corelib/json/qjsonobject.cpp')
-rw-r--r-- | src/corelib/json/qjsonobject.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/corelib/json/qjsonobject.cpp b/src/corelib/json/qjsonobject.cpp index 4ee20ef168..b5b6f36bc6 100644 --- a/src/corelib/json/qjsonobject.cpp +++ b/src/corelib/json/qjsonobject.cpp @@ -304,6 +304,7 @@ QVariantHash QJsonObject::toVariantHash() const { QVariantHash hash; if (o) { + hash.reserve(o->length); for (uint i = 0; i < o->length; ++i) { QJsonPrivate::Entry *e = o->entryAt(i); hash.insert(e->key(), QJsonValue(d, o, e->value).toVariant()); @@ -374,6 +375,22 @@ QJsonValue QJsonObject::value(const QString &key) const } /*! + \overload + \since 5.7 +*/ +QJsonValue QJsonObject::value(QLatin1String key) const +{ + if (!d) + return QJsonValue(QJsonValue::Undefined); + + bool keyExists; + int i = o->indexOf(key, &keyExists); + if (!keyExists) + return QJsonValue(QJsonValue::Undefined); + return QJsonValue(d, o, o->entryAt(i)->value); +} + +/*! Returns a QJsonValue representing the value for the key \a key. This does the same as value(). @@ -388,6 +405,13 @@ QJsonValue QJsonObject::operator [](const QString &key) const } /*! + \fn QJsonValue QJsonObject::operator [](QLatin1String key) const + + \overload + \since 5.7 +*/ + +/*! Returns a reference to the value for \a key. The return value is of type QJsonValueRef, a helper class for QJsonArray @@ -411,6 +435,16 @@ QJsonValueRef QJsonObject::operator [](const QString &key) } /*! + \overload + \since 5.7 +*/ +QJsonValueRef QJsonObject::operator [](QLatin1String key) +{ + // ### optimize me + return operator[](QString(key)); +} + +/*! Inserts a new item with the key \a key and a value of \a value. If there is already an item with the key \a key, then that item's value @@ -535,6 +569,20 @@ bool QJsonObject::contains(const QString &key) const } /*! + \overload + \since 5.7 +*/ +bool QJsonObject::contains(QLatin1String key) const +{ + if (!o) + return false; + + bool keyExists; + o->indexOf(key, &keyExists); + return keyExists; +} + +/*! Returns \c true if \a other is equal to this object. */ bool QJsonObject::operator==(const QJsonObject &other) const @@ -608,11 +656,31 @@ QJsonObject::iterator QJsonObject::find(const QString &key) return iterator(this, index); } +/*! + \overload + \since 5.7 +*/ +QJsonObject::iterator QJsonObject::find(QLatin1String key) +{ + bool keyExists = false; + int index = o ? o->indexOf(key, &keyExists) : 0; + if (!keyExists) + return end(); + detach2(); + return iterator(this, index); +} + /*! \fn QJsonObject::const_iterator QJsonObject::find(const QString &key) const \overload */ +/*! \fn QJsonObject::const_iterator QJsonObject::find(QLatin1String key) const + + \overload + \since 5.7 +*/ + /*! Returns a const iterator pointing to the item with key \a key in the map. @@ -629,6 +697,19 @@ QJsonObject::const_iterator QJsonObject::constFind(const QString &key) const return const_iterator(this, index); } +/*! + \overload + \since 5.7 +*/ +QJsonObject::const_iterator QJsonObject::constFind(QLatin1String key) const +{ + bool keyExists = false; + int index = o ? o->indexOf(key, &keyExists) : 0; + if (!keyExists) + return end(); + return const_iterator(this, index); +} + /*! \fn int QJsonObject::count() const \overload |