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

sta*_*mer 3 c++ qt json qtcore qjsonobject

有一个QJsonObject

    {
        "a":"...",
        "b":"...",
        "c":"..."
    }
Run Code Online (Sandbox Code Playgroud)

有没有一种方法来检查这个对象是否包含"a"?

Ell*_*ott 10

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

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

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