gpt4 book ai didi

c++ - jsoncpp 如何检查标签是否为空 .isNull() 抛出断言

转载 作者:可可西里 更新时间:2023-11-01 15:45:52 25 4
gpt4 key购买 nike

我正在使用 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 对象有效。所有其他(IntBoolArray 等)都将断言。

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

json_value.cpp 源文件顶部的“ToDo”注释(其中定义了 JSON_ASSERT)暗示开发人员可能计划在未来版本中使用更强大的错误处理而不是这些断言,但与此同时,您可以像这样检查自己:

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 节点断言,因此请务必在检查 之前检查 isObject() >isMember() 如果 UserRoot0 不能保证是一个 Object

关于c++ - jsoncpp 如何检查标签是否为空 .isNull() 抛出断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9647377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com