7

I'm trying to extract the key and the value of an object in array but don't find the proper getter:

 for (Value::ConstValueIterator itr = document["params"].Begin(); itr != document["params"].End(); ++itr)
{
    for (Value::MemberIterator m = itr->MemberBegin(); m != itr->.MemberEnd(); ++m) {

    }       
}

in the second loop, I want to extract the key and value from the iterator separately. how to do the extraction?

einverne
  • 6,454
  • 6
  • 45
  • 91
Pooya
  • 992
  • 2
  • 10
  • 31

2 Answers2

12

Suppose V is a JSON object which has key-value object. You can retrieve data like this.

const rapidjson::Value& V;
for (Value::ConstMemberIterator iter = V.MemberBegin(); iter != V.MemberEnd(); ++iter){
    printf("%s\t", iter->name.GetString());
    printf("%s\t", iter->value.GetString());
}
einverne
  • 6,454
  • 6
  • 45
  • 91
0

m is Member*, where Member is

struct Member { 
    GenericValue<Encoding, Allocator> name;     //!< name of member (must be a string)
    GenericValue<Encoding, Allocator> value;    //!< value of member.
};

Thus the proper getter for the key is m->name.

That much is obvious from "rapidjson/document.h". I can't test it further without a self-contained example (https://stackoverflow.com/help/mcve, http://www.sscce.org/).

Community
  • 1
  • 1
ArtemGr
  • 11,684
  • 3
  • 52
  • 85