有一个QJsonObject
{
"a":"...",
"b":"...",
"c":"..."
}
有没有方法来检查这个对象是否包含“a”?
根据文档,您有几个选择:
QJsonObject::contains
,它返回一个 boolQJsonObject::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
QByteArray: bool QByteArray::contains(const QByteArray & ba) const
提到所有这些,您可能不会完全惊讶于所请求的类有一个名为
contains
的方法,如下所示: