2010-09-20 9 views
15

No veo una manera de crear una matriz usando el árbol boost :: property. El siguiente código ...C++: ¿Cómo crear una matriz usando 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; 
    } 
} 

... sólo me da ...

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

Los documentos de impulso :: property_tree son escasos. ¿Cómo creo una matriz JSON con boost :: property_tree?

Respuesta

20

Si usted tiene un sub-árbol cuyos nodos sólo tienen teclas de vacío, entonces será serializado como una matriz:

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

Tenga en cuenta que una triste corolario de esto es que no hay manera de crear un vacío Matriz JSON. –

+4

@MichaelAnderson: en primer lugar, no considero que usar 'boost :: property_tree' para manipular XML y JSON sea una buena idea. No es para lo que fue construido. Hay bibliotecas mucho mejores para ambas tareas, que también son tan 'pequeñas' como 'boost :: property_tree'. – ybungalobill

+0

@ybungalobill: ¿qué bibliotecas recomendarías? – Jonathan

Cuestiones relacionadas