summaryrefslogtreecommitdiffstats
path: root/src/corelib/json/qjsonobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/json/qjsonobject.cpp')
-rw-r--r--src/corelib/json/qjsonobject.cpp81
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