After having a quick look at the documentation, I found the getMemberNames method, which returns a list with the member names, and did this little experiment:
#include <iostream> #include "jsoncpp/json.h" using namespace std; int main(int argc, char **argv) { Json::Value change; Json::Value minParameters; Json::Value minParametersAnm; minParameters["MinimumRMS"] = 0.2; minParameters["sgbUpdated"] = true; change["Minimizer"] = minParameters; minParametersAnm["MinimumRMS"] = 0.5; minParametersAnm["sgbUpdated"] = false; change["Minimizer::ANM"] = minParametersAnm; Json::Value::Members memberNames = change.getMemberNames(); cout<<"Traverse members of: "<<endl <<"\"change\":"<<endl <<change.toStyledString()<<endl<<endl; cout<<"List of members:"<<endl; for(unsigned int i=0; i<memberNames.size(); ++i) { string memberName = memberNames[i]; Json::Value value = change[memberName]; cout<<"Key: "<<memberName<<endl; cout<<"Value: "<<value.toStyledString()<<endl; } return 0; }I compiled it:
g++ -o test_traverse_members test_traverse_members.cpp -ljson_linux-gcc-4.4.5_libmtAnd this is what I got:
$ ./test_traverse_members Traverse members of: "change": { "Minimizer" : { "MinimumRMS" : 0.20, "sgbUpdated" : true }, "Minimizer::ANM" : { "MinimumRMS" : 0.50, "sgbUpdated" : false } } List of members: Key: Minimizer Value: { "MinimumRMS" : 0.20, "sgbUpdated" : true } Key: Minimizer::ANM Value: { "MinimumRMS" : 0.50, "sgbUpdated" : false }We could get the same result using Json::value's iterators.
This will be material for a future post, though.
No comments:
Post a Comment