Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Looping over an array in RapidJson and getting the object elements

Tags:

c++

rapidjson

How do I get the value out of a ConstrValueIterator? In this case I know that the elements of the array are dictionaries (aka objects).

Code summed up:

for (rapidjson::Value::ConstValueIterator itr = rawbuttons.Begin(); itr != rawbuttons.End(); ++itr) { // Ok
    if (itr->HasMember("yes")) { // Ok
        auto somestring = itr["yes"]->GetString(); // error
    }
}
like image 998
Jonny Avatar asked Aug 31 '15 02:08

Jonny


2 Answers

Um. Iterators need to be dereferenced or whatever it's called.

for (rapidjson::Value::ConstValueIterator itr = rawbuttons.Begin(); itr != rawbuttons.End(); ++itr) { // Ok
    if (itr->HasMember("yes")) { // Ok
        auto somestring = (*itr)["yes"]->GetString(); // bingo
    }
}
like image 96
Jonny Avatar answered Nov 07 '22 19:11

Jonny


It should be

for (rapidjson::Value::ConstValueIterator itr = rawbuttons.Begin(); itr != rawbuttons.End(); ++itr) { 
if (itr->HasMember("yes")) { 
    auto somestring = (*itr)["yes"].GetString(); 
}}
like image 2
Aditya Avatar answered Nov 07 '22 20:11

Aditya