有一个QJsonObject
{
"a":"...",
"b":"...",
"c":"..."
}
是否有方法检查此对象是否包含“a”?
答案 0 :(得分:9)
根据the documentation,您有几个选择:
QJsonObject::contains
返回一个bool QJsonObject::find
。如果找不到该项,则返回值将等于QJsonObject::end
如果您还需要迭代器,请使用此项。QJsonObject::value
,如果有,则返回密钥的值,否则返回QJsonValue::Undefined
。您可能无论如何都要使用值方法来获取键的值,因此这将允许您执行一次查找而不是两次查找。使用它来提高性能可能很诱人,但请记住,它会更难阅读,并且在大多数情况下,性能增益足够小,可能不值得。所有这一切都直接来自Qt文档 - 关于Qt我最喜欢的是他们精彩的文档,所以我鼓励你在遇到类似问题时将其作为第一站。
答案 1 :(得分:2)
是的,所以一般来说,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
QByteArray: bool QByteArray::contains(const QByteArray & ba) const
提到这一切后,您可能不会完全惊讶所请求的类有一个名为contains
的方法,如下所示: