有没有一种方法可以检查 QJsonObject 对象是否包含特定属性?

问题描述 投票:0回答:2

有一个QJsonObject

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

有没有方法来检查这个对象是否包含“a”?

c++ json qt qtcore qjsonobject
2个回答
16
投票

根据文档,您有几个选择:

  • 最明显的是
    QJsonObject::contains
    ,它返回一个 bool
  • 您可以调用
    QJsonObject::find
    这将返回一个迭代器。如果未找到该项目,返回值将等于
    QJsonObject::end
    如果您仍然需要迭代器,请使用此值。
  • 您可以调用
    QJsonObject::value
    ,如果存在,它将返回键的值,否则返回
    QJsonValue::Undefined
    。无论如何,您可能正在使用 value 方法来获取键的值,因此这将允许您执行一次查找而不是两次。使用它来提高性能可能很诱人,但请记住,它会更难阅读,并且在大多数情况下,性能增益足够小,可能不值得

所有这些都直接来自 Qt 文档 - 关于 Qt 我最喜欢的一点是他们出色的文档,所以我鼓励您在遇到此类问题时将其作为第一站。


2
投票

是的,所以一般来说,Qt 使用“包含”API 来处理此类事情。如果您看看以下地方,您就会亲眼看到:

提到所有这些,您可能不会完全惊讶于所请求的类有一个名为

contains
的方法,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.