加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – jsoncpp如何检查标签是否为null .isNull()throw assertion

发布时间:2020-12-16 05:45:14 所属栏目:百科 来源:网络整理
导读:我使用jsoncpp,它的伟大,但是当我需要检查json结构是否包含标签 当我这样做: UserRoot0["error"].isNull() 它抛出我从json_value.cpp行1025断言 JSON_ASSERT( type_ == nullValue || type_ == objectValue ); 我想检查一下这个类型的响应是否得到: { "erro
我使用jsoncpp,它的伟大,但是当我需要检查json结构是否包含标签
当我这样做:
UserRoot0["error"].isNull()

它抛出我从json_value.cpp行1025断言

JSON_ASSERT( type_ == nullValue  ||  type_ == objectValue );

我想检查一下这个类型的响应是否得到:

{
    "error" : {
        "message" : "Error validating application.","type" : "OAuthException","code" : 190
    }
}

解决方法

[]操作符仅对Object或null类型的JsonValue对象有效.所有其他人(Int,Bool,Array等)都会断言.

如果您的UserRoot0对象是一个Array或其他非Object类型,您还有一些工作要做(比如迭代到子节点)来查找可能包含错误也可能不包含错误的目标节点.打印UserRoot0.toStyledString()以查看您的JSON是什么样子,并确保它看起来像一个JSON对象(参见json.org有一个很好的概述是什么).

json_value.cpp源文件(其中定义了JSON_ASSERT)的顶部的“ToDo”注释意味着开发人员可能正在计划更强大的错误处理,而不是将来版本中的这些断言,但同时您可以检查自己,喜欢这个:

if(UserRoot0.isObject() && UserRoot0.isMember("error"))
    // Process error node
else
    // This node isn't an Object node or doesn't contain the "error" key

isMember()检查也将为非Object节点断言,因此如果UserRoot0不能保证为对象,请确保在检查isMember()之前检查isObject().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读