【问题标题】:is there a method to check if a QJsonObject object contains specific attribute?有没有一种方法可以检查 QJsonObject 对象是否包含特定属性?
【发布时间】:2014-04-10 14:40:37
【问题描述】:

有一个QJsonObject

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

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

【问题讨论】:

  • QJsonObject::contains(const QString &)?
  • 提问前检查documentation

标签: c++ json qt qtcore qjsonobject


【解决方案1】:

根据the documentation,您有几个选择:

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

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

【讨论】:

    【解决方案2】:

    是的,所以一般来说,Qt 使用 API“包含”来处理这些事情。如果你看看以下几个地方,你会看到它自己:

    提到这一切,你可能不会对请求的类有一个名为contains 的方法感到惊讶,如下所示:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-08
      • 2012-02-02
      • 2013-05-04
      • 2016-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      相关资源
      最近更新 更多