2

我有一个这样的 JSON 字符串:

{"callCommand":{"command":"car","floor":"2","landing":"front"}}

现在,我想检查是否有名称command并获取值。可能吗?我的代码如下,但它不起作用。

const char json[] = "{\"callCommand\":{\"command\":\"car\",\"floor\":\"2\",\"landing\":\"front\"}}";

rapidjson::Value::ConstMemberIterator itr = d.FindMember("command");

if (itr != d.MemberEnd())
    printf("command = %s\n", d["callCommand"]["command"].GetString());
4

2 回答 2

3

您正在文档的顶层搜索“命令”:

d.FindMember("command");

当您应该在“callCommand”中搜索它时:

d["callCommand"].FindMember("command");

此外,在使用 FindMember 搜索后,您应该使用迭代器而不是使用 operator[] 再次搜索。就像是:

// assuming that "callCommand" exists
rapidjson::Value& callCommand = d["callCommand"];
rapidjson::Value::ConstMemberIterator itr = callCommand.FindMember("command");

// assuming "command" is a String value
if (itr != callCommand.MemberEnd())
    printf("command = %s\n", itr->value.GetString());
于 2017-07-18T22:55:27.170 回答
-4

可以使用rapidjson的HasMember函数,如下:

Document doc;
doc.Parse(json);
doc.HasMember("command");//true or false
于 2015-12-15T00:22:40.653 回答