I have the following JSON object
{
"prog":[
{
"iUniqueID":1,
"bGroup":1,
"inFiles":[
{
"sFileType":"Zonal Data 1",
"bScenarioSpecific":0,
"pos":{
"x1":1555,
"y1":-375,
"x2":1879,
"y2":-432
}
},
{
"sFileType":"Record File",
"bScenarioSpecific":0,
"pos":{
"x1":1555,
"y1":-436,
"x2":1879,
"y2":-493
}
}
],
"outFiles":[
{
"sFileType":"Record File 1",
"bScenarioSpecific":1,
"pos":{
"x1":2344,
"y1":-405,
"x2":2662,
"y2":-462
}
}
]
},
{
"iUniqueID":2,
"bGroup":1,
"inFiles":[
{
"sFileType":"Matrix File 1",
"bScenarioSpecific":0,
"pos":{
"x1":98,
"y1":-726,
"x2":422,
"y2":-783
}
},
{
"sFileType":"Matrix File 2",
"bScenarioSpecific":0,
"pos":{
"x1":98,
"y1":-787,
"x2":422,
"y2":-844
}
}
],
"outFiles":[
{
"sFileType":"Record File 1",
"bScenarioSpecific":1,
"pos":{
"x1":887,
"y1":-966,
"x2":1205,
"y2":-1023
}
}
]
}
]
}
How can I iteratively access the x1 of objects inside "inFiles"? Or in general, how can I access the values stored in sub-array and sub-objects using rapidjson. Here is what I have so far
const Value& prog = document["prog"];
assert(prog.IsArray());
for (rapidjson::Value::ConstValueIterator itr = prog.Begin(); itr != prog.End(); ++itr) {
}
I have tried a variety of things but my code does not compile, therefore I felt like it would need be productive to add it to the description of the issue.
Here is what ended up working
const Value& prog = d["prog"];
for (Value::ConstValueIterator p = prog.Begin(); p != prog.End(); ++p) {
std:cout << (*p)["iUniqueID"].GetInt();
const Value& inFiles = (*p)["inFiles"];
for (Value::ConstValueIterator inFile = inFiles.Begin(); inFile != prog.End(); ++inFile) {
std::cout << (*inFile)["sFileType"].GetString() << std::endl;
std::cout << (*inFile)["pos"]["x1"].GetInt() << std::endl;
}
}
The post here helped tremendously.