boost : il suffit de faire une itération sur les éléments d'un ptree
Cela devrait être simple (je suis en train d'apprendre boost donc je suis absent quelque chose)
J'ai lu dans certains simple JSON à l'aide de json_read et ils ont maintenant un ptree. Tous les exemples sur le web pour montrer à l'aide de ptree.get("entry_name") pour obtenir une entrée. Tout ce que je veux faire, c'est quelque chose comme:
ptree pt;
read_json(ss,pt);
BOOST_FOREACH(ptree::value_type &v, pt)
{
std::cout << v.{entry_name} << v.{value}
}
c'est à dire une boucle par la ptree et écrire chaque nom (c'est à dire ce que vous mettez dans pt.get()) et de la valeur correspondante.
Désolé si c'est simple
Ross
OriginalL'auteur Ross W | 2011-04-14
Vous devez vous connecter pour publier un commentaire.
J'étais à la recherche de la même chose, et je n'ai pas trouvé la réponse nulle part. Il s'est avéré être assez simple en fait:
iter->le premier est le nom de l'entrée, et iter->second.de données() est la valeur de l'entrée du premier niveau. (Vous pouvez ensuite ré-itérer avec iter->second.begin () et end() pour des niveaux plus profonds.)
En outre, si un tel nœud de cette itération n'est pas un nœud terminal et est lui-même un ptree, vous pouvez obtenir ce que ptree de cet itérateur lui-même :
ptree subPt = iter->second.get_child("nodeName");
Merci de me donner une direction à la comprendre, ptree semble maintenant très intuitif comme les autres C++ stl fonctions.
Droit, mais si vous lisez le texte ci-dessous le code, il est expliqué comment traiter avec les non-terminaux.
OriginalL'auteur mr_georg
Je vais avoir des ennuis avec ptree ainsi, mais peut-être cela peut vous aider:
Découvrez du coup de pouce ptree tutoriel rapide
et
Cela fonctionnerait-il?
OriginalL'auteur Sam
Vieux thread, mais ici, c'est un C++11 version de mr_georg de l' réponse avec la gamme à base de boucles:
Pour cette json:
Il sorties:
OriginalL'auteur Stewart
Voici un excellent exemple de la façon d'effectuer une itération sur un ptree à l'aide de BOOST_FOREACH
http://akrzemi1.wordpress.com/2011/07/13/parsing-xml-with-boost/
pour un accès direct à l'aide de la normale "get" fonctions regardez l'exemple de boost:
http://www.boost.org/doc/libs/1_51_0/doc/html/boost_propertytree/tutorial.html
la page de documentation se trouve ici:
http://www.boost.org/doc/libs/1_51_0/doc/html/boost/property_tree/basic_ptree.html
Je sais que c'est pas très bien documenté, mais il est utile.
OriginalL'auteur Alex
Cet exemple effectue une itération sur un simple objet JSON et met ses valeurs dans un vecteur.
OriginalL'auteur xinthose