2010-09-20 42 views
15

我看不到使用boost :: property樹創建數組的方法。下面的代碼...C++:如何使用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; 
    } 
} 

...只是給了我......

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

上的boost :: property_tree該文檔是稀疏。如何用boost :: property_tree創建JSON數組?

回答

20

如果你有一個子樹,其唯一的節點具有空鍵,那麼它將被序列化爲一個數組:

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

需要注意的是一個可悲的必然結果是,有沒有方法來創建一個空JSON數組。 – 2012-09-01 09:02:38

+4

@MichaelAnderson:我不認爲首先使用'boost :: property_tree'來操縱XML和JSON是一個好主意。這不是它的目的。這兩個任務都有很多更好的庫,它們與'boost :: property_tree'一樣'小'。 – ybungalobill 2012-09-01 09:06:17

+0

@ybungalobill:你會推薦哪些庫? – Jonathan 2013-03-05 19:07:49

相關問題