2010-09-20 39 views
15

Tôi không thấy cách tạo mảng bằng cách sử dụng boost :: property tree. Các mã sau đây ...C++: Cách tạo mảng bằng cách sử dụng 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; 
    } 
} 

... chỉ mang lại cho tôi ...

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

Các tài liệu trên boost :: property_tree là thưa thớt. Làm thế nào để tạo một mảng JSON với boost :: property_tree?

Trả lời

20

Nếu bạn có một cây con có các nút chỉ có phím trống, sau đó nó sẽ được tuần tự như một mảng:

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

Lưu ý rằng một hệ quả đáng buồn này là không có cách nào để tạo ra một sản phẩm nào Mảng JSON. –

+4

@MichaelAnderson: Tôi không xem xét việc sử dụng 'boost :: property_tree' để thao tác XML và JSON một ý tưởng hay ngay từ đầu. Nó không phải là những gì nó được xây dựng cho. Có nhiều thư viện tốt hơn cho cả hai tác vụ này, cũng như 'nhỏ' như 'boost :: property_tree'. – ybungalobill

+0

@ybungalobill: bạn sẽ giới thiệu thư viện nào? – Jonathan

Các vấn đề liên quan