есть объект QJsonObject
{
"a":"...",
"b":"...",
"c":"..."}
Есть ли способ проверить, содержит ли этот объект «а»?
У вас есть несколько вариантов, в соответствии с документация:
QJsonObject::contains
который возвращает булQJsonObject::find
который вернет итератор. Если элемент не найден, возвращаемое значение будет равно QJsonObject::end
Используйте это, если вам нужен итератор в любом случае.QJsonObject::value
, который вернет значение ключа, если оно есть, и QJsonValue::Undefined
иначе. В любом случае, вы, вероятно, используете метод value, чтобы получить значение для ключа, так что это позволит вам выполнить один поиск вместо двух. Может быть заманчиво использовать это для повышения производительности, но помните, что это будет труднее читать, и в большинстве случаев выигрыш в производительности достаточно мал, что, вероятно, не стоит тогоВсе это пришло непосредственно из документации Qt — моя любимая вещь в Qt — это фантастическая документация, поэтому я призываю вас сделать это в первую очередь, когда у вас возникнут подобные вопросы.
Да, в общем, Qt использует API «содержит» для таких вещей. Если вы посмотрите на следующие места, вы увидите это сами:
QStringList: bool QStringList :: contains (const QString & str, Qt :: CaseSensitivity cs = Qt :: CaseSensitive) const
QString: bool QString :: contains (const QString & str, Qt :: CaseSensitivity cs = Qt :: CaseSensitive) const
QVector: bool QVector :: contains (const T & значение) const
QByteArray: bool QByteArray :: contains (const QByteArray & ба) конст
Упомянув все это, вы можете быть не совсем удивлены, что у запрошенного класса есть метод, называемый contains
следующее: