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

есть объект QJsonObject

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

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

3

Решение

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

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

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

9

Другие решения

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

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

2

По вопросам рекламы [email protected]