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

时间:2014-04-10 14:40:37

标签: c++ json qt qtcore qjsonobject

有一个QJsonObject

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

是否有方法检查此对象是否包含“a”?

2 个答案:

答案 0 :(得分:9)

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

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

所有这一切都直接来自Qt文档 - 关于Qt我最喜欢的是他们精彩的文档,所以我鼓励你在遇到类似问题时将其作为第一站。

答案 1 :(得分:2)

是的,所以一般来说,Qt使用API​​“包含”来做这些事情。如果你看看下面的地方,你会亲眼看到:

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