is there a method to check if a QJsonObject object contains specific attribute?

stamaimer picture stamaimer · Apr 10, 2014 · Viewed 8.1k times · Source

there is a QJsonObject

    {
        "a":"...",
        "b":"...",
        "c":"..."
    }

is there a method to check if this object contains "a"?

Answer

Elliott picture Elliott · Apr 10, 2014

You have a few options, according to the documentation:

  • The most obvious is QJsonObject::contains which returns a bool
  • You can call QJsonObject::find which will return an iterator. If the item isn't found, the return value will be equal to QJsonObject::end Use this if you need an iterator anyways.
  • You can call QJsonObject::value, which will return the value for the key if present, and QJsonValue::Undefined otherwise. You're probably using the value method anyways to get the value for a key, so this will allow you to do one lookup instead of two. It may be tempting to use this for a performance boost, but remember that it will be harder to read and in most cases the performance gain is small enough that it's probably not worth it

All of this came directly from the Qt documentation - my favorite thing about Qt is their fantastic documentation, so I encourage you to make that your first stop when you have questions like these.