This is the same example I used in my previous post, but using iterators instead of the list of member names:
#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;
cout<<"Traverse members of: "<<endl
<<"\"change\":"<<endl
<<change.toStyledString()<<endl<<endl;
Json::Value::iterator it = change.begin();
cout<<"List of members:"<<endl;
for(Json::Value::iterator it = change.begin(); it !=change.end(); ++it)
{
Json::Value key = it.key();
Json::Value value = (*it);
cout<<"Key: "<<key.toStyledString();
cout<<"Value: "<<value.toStyledString();
}
return 0;
}
Note the use of the key() method to get the key of the Json::Value from the iterator. Also note how we need to dereferentiate the iterator to get the Json::Value from the iterator.Ok, so, I compiled it doing:
g++ -o test_iterator_members test_iterator_members.cpp -ljson_linux-gcc-4.4.5_libmtAnd I executed it and got this result:
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
}
That was helpful Thank you . But further I want to actually compare two json string and check if it is qual or not and the json string will be passed as parameters to my function and then I have to parse it , but I am unable to compare the entire two Json. Can you help me with that please? Thank you in advance.
ReplyDelete