2010-09-20 6 views
15

मुझे boost :: property tree का उपयोग करके सरणी बनाने का कोई तरीका नहीं दिख रहा है। निम्नलिखित कोड ...सी ++: 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" 
} 

बढ़ावा :: 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

नोट यह करने के लिए एक दुखद परिणाम एक खाली बनाने के लिए कोई रास्ता नहीं है कि वहाँ है कि जेएसओएन सरणी –

+4

@ माइकल एंडरसन: मैं एक्सएमएल और जेएसओएन को पहली जगह में एक अच्छा विचार बनाने के लिए 'boost :: property_tree' का उपयोग करने पर विचार नहीं करता हूं। यह वह नहीं है जिसे इसके लिए बनाया गया था। इन दोनों कार्यों के लिए बहुत बेहतर पुस्तकालय हैं, जो 'बूस्ट :: property_tree' के रूप में' छोटे 'भी हैं। – ybungalobill

+0

@ybungalobill: आप कौन सी पुस्तकालयों की सिफारिश करेंगे? – Jonathan