2010-09-20 7 views
15

Je ne vois pas comment créer un tableau en utilisant boost :: property tree. Le code suivant ...C++: Comment créer un tableau en utilisant boost :: property_tree?

#include <boost/property_tree/ptree.hpp> 
#include <boost/property_tree/json_parser.hpp> 

#include <iostream> 

int main() 
{ 
    try { 
    boost::property_tree::ptree props; 
    props.push_back(std::make_pair("foo", "bar")); 
    props.push_back(std::make_pair("foo", "baz")); 
    boost::property_tree::write_json("prob.json", props); 
    } catch (const std::exception & ex) { 
    std::cout << ex.what() << std::endl; 
    } 
} 

... me donne ...

{ 
    "foo": "bar", 
    "foo": "baz" 
} 

Les docs sur boost :: property_tree sont rares. Comment créer un tableau JSON avec boost :: property_tree?

Répondre

20

Si vous avez un sous-arbre dont le seul noeuds ont des clés vides, il sera publié en feuilleton comme un tableau:

boost::property_tree::ptree array; 
array.push_back(std::make_pair("", "bar")); 
array.push_back(std::make_pair("", "baz")); 

boost::property_tree::ptree props; 
props.push_back(std::make_pair("array", array)); 

boost::property_tree::write_json("prob.json", props); 
+2

Notez que corollaire triste de cela est qu'il n'y a aucun moyen de créer un vide Tableau JSON. –

+4

@MichaelAnderson: Je ne pense pas utiliser 'boost :: property_tree' pour manipuler XML et JSON une bonne idée en premier lieu. Ce n'est pas ce pour quoi il a été construit. Il existe de bien meilleures bibliothèques pour ces deux tâches, qui sont aussi 'petites' que 'boost :: property_tree'. – ybungalobill

+0

@ybungalobill: quelles bibliothèques recommanderiez-vous? – Jonathan

Questions connexes