Usa gli iteratori, Luke.
In primo luogo, è necessario analizzare il file:
boost::property_tree::ptree doc;
boost::property_tree::read_json("input_file.json", doc);
... ora, perché sembra di avere le chiavi multiple "Frame" nel dizionario livello superiore è necessario scorrere su di loro:
BOOST_FOREACH (boost::property_tree::ptree::value_type& framePair, doc) {
// Now framePair.first == "frame" and framePair.second is the subtree frame dictionary
}
iterare su righe e colonne è lo stesso:
BOOST_FOREACH (boost::property_tree::ptree::value_type& rowPair, frame.get_child("points")) {
// rowPair.first == ""
BOOST_FOREACH (boost::property_tree::ptree::value_type& itemPair, rowPair.second) {
cout << itemPair.second.get_value<std::string>() << " ";
}
cout << endl;
}
non ho la prova il codice, ma il l'idea funzionerà :-)
http://www.boost.org/doc/libs/1_41_0/doc/html/property_tree/reference.html#header.boost.property_tree.json_parser_hpp – riv
PTree lo accetterà, ma rigorosamente i nomi delle proprietà ripetute che parlano non sono JSON validi. –