0
私はFindMemberを使用してそれを検証し、それを受け取るJSONを持っています。 しかし、問題は、それが「タイトル」の文字列 を見つけるかということですが、それはrapidjsonを返さない::メンバーが見つかったときの値RapidJSON FindMemberを使用するとメンバーオブジェクトを受け取る方法
[{
"title" : "one",
"type" : "gg",
"center" : {
},
}]
rapidjson::Document document;
if(!document.Parse(jsonContent.c_str()).HasParseError())
{
if (document.IsArray())
{
for (rapidjson::SizeType i = 0; i < document.Size(); i++)
{
rapidjson::Value& findMemberInJsonNode = FindMemberInJsonNode(&document[i], "title");
}
}
}
rapidjson::Value& HelloWorld::FindMemberInJsonNode(rapidjson::Value* jsonValue,std::string str)
{
rapidjson::Value::MemberIterator localMemberItr = jsonValue->FindMember(str.c_str());
//create null
rapidjson::Value &val = rapidjson::Value::GenericValue();
if (localMemberItr != jsonValue->MemberEnd())
{
//IT IS ENTER HERE SO it DOES FIND THE "title" STRING
val = localMemberItr->value;
if (val.IsNull())
{
int s = 1;
}
else if (val.IsObject())
{
int s = 0;
}
}
//IT IS NULL
return val;
}
彼らはなぜrapidjsonウェブサイトのチュートリアルでHasMemberを示さないが、人々は、メンバーが存在するかどうかを確認するために、次のように反復されていますか?私はHasMemberを働かせようとしています。 – Michele
FindMember()を使用すると同時に値を取得できますが、HasMember()はboolだけを返すことができます。 FindMember()を使用すると、最後に値が必要な場合はデータ構造を2回検索することができなくなります。 –