有一个 QJsonObject
{
"a":"...",
"b":"...",
"c":"..."
}
有没有办法检查这个对象是否包含“a”?
有一个 QJsonObject
{
"a":"...",
"b":"...",
"c":"..."
}
有没有办法检查这个对象是否包含“a”?
根据文档,您有几个选择:
QJsonObject::contains
返回一个布尔值QJsonObject::find
which 将返回一个迭代器。如果未找到该项目,则返回值将等于QJsonObject::end
Use this 如果您仍然需要迭代器。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
如下调用的方法感到完全惊讶: