这是架构:
{
"definitions": {
"properties": {
"Count": {
"type": [
"number",
"null"
]
}
}
}
} 我想阅读“type”中的成员
我试图以多种方式尝试,例如
if(val["definitions"]["properties"]["Count"]["type"][0] == "number" and
(val["definitions"]["properties"]["Count"]["type"][1] == "null"))
{
//code here
}
这会导致以下错误
错误:在抛出'Json :: LogicError'的实例后调用终止what():在Json :: Value :: operator中:需要arrayValue Aborted(core dumped)
对于这段代码
if (val["definitions"]["properties"]["Count"]["type"][0].isMember("number") and
(val["definitions"]["properties"]["Count"]["type"][0].isMember("null"))){
//code here
}
我得到了
错误:在抛出'Json :: LogicError'实例后调用terminate what():在Json :: Value :: find(key,end,found):需要objectValue或nullValue Aborted(core dumped)
答案 0 :(得分:0)
你的代码是对的...你的json是错的... JsonCpp需要"定义"的引号并且你不能在数组或对象中的最后一项之后有额外的逗号。
只需将其更改为:
{
"definitions": {
"properties": {
"Count": {
"type": [
"number",
"null"
]
}
}
}
}
- )
答案 1 :(得分:0)
const Json::Value obj=val["definitions"]["properties"]["count"]["type"];
if (std::find(obj.begin(),obj.end(),"string")!=obj.end() and
std::find(obj.begin(),obj.end(),"null")!=obj.end()){
// code here;
}