Есть ли способ проверить, содержит ли объект QJsonObject определенный атрибут?

Есть объект QJsonObject

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

Есть ли способ проверить, содержит ли этот объект "а"?

2 ответа

Решение

У вас есть несколько вариантов, согласно документации:

  • Наиболее очевидным является QJsonObject::contains который возвращает бул
  • Ты можешь позвонить QJsonObject::find который вернет итератор. Если элемент не найден, возвращаемое значение будет равно QJsonObject::end Используйте это, если вам нужен итератор в любом случае.
  • Ты можешь позвонить QJsonObject::value, который будет возвращать значение ключа, если оно есть, и QJsonValue::Undefined иначе. В любом случае вы, вероятно, используете метод value, чтобы получить значение для ключа, так что это позволит вам выполнить один поиск вместо двух. Может быть заманчиво использовать это для повышения производительности, но помните, что это будет труднее читать, и в большинстве случаев выигрыш в производительности достаточно мал, что, вероятно, не стоит того

Все это пришло непосредственно из документации Qt - моя любимая вещь в Qt - это фантастическая документация, поэтому я призываю вас сделать это в первую очередь, когда у вас возникнут подобные вопросы.

Да, в общем, Qt использует API "содержит" для таких вещей. Если вы посмотрите на следующие места, вы увидите это сами:

Упомянув все это, вы можете быть не совсем удивлены, что у запрошенного класса есть метод contains следующее:

Другие вопросы по тегам