2010-09-20 6 views
15

Nie widzę sposobu, aby utworzyć tablicę za pomocą drzewa boost :: property. Poniższy kod ...C++: Jak utworzyć tablicę za pomocą metody 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; 
    } 
} 

... po prostu daje mi ...

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

Docs na boost :: property_tree są nieliczne. Jak utworzyć tablicę JSON z boost :: property_tree?

Odpowiedz

20

Jeśli masz sub-tree którego tylko węzły mają pustych kluczy, a następnie zostanie on szeregowane jako tablica:

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

Zauważ, że to smutny konsekwencją jest to, że nie ma sposobu, aby utworzyć pusty Tablica JSON. –

+4

@MichaelAnderson: Nie uważam, aby użycie 'boost :: property_tree' do manipulowania XML i JSON było dobrym pomysłem. To nie jest to, do czego został zbudowany. Istnieje wiele lepszych bibliotek dla obu tych zadań, które są również "małe" jak 'boost :: property_tree'. – ybungalobill

+0

@ybungalobill: które biblioteki poleciłbyś? – Jonathan