यहां बहुत अधिक प्रयोग के बाद मैं आया हूं। मैं इसे समुदाय में साझा करना चाहता था क्योंकि मुझे वह नहीं मिला जो मैं चाहता था। हर कोई सिर्फ बूस्ट डॉक्स से जवाब पोस्ट करना प्रतीत होता था, जिसे मैंने अपर्याप्त पाया। किसी भी तरह:
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <string>
#include <iostream>
using namespace std;
using boost::property_tree::ptree;
string indent(int level) {
string s;
for (int i=0; i<level; i++) s += " ";
return s;
}
void printTree (ptree &pt, int level) {
if (pt.empty()) {
cerr << "\""<< pt.data()<< "\"";
}
else {
if (level) cerr << endl;
cerr << indent(level) << "{" << endl;
for (ptree::iterator pos = pt.begin(); pos != pt.end();) {
cerr << indent(level+1) << "\"" << pos->first << "\": ";
printTree(pos->second, level + 1);
++pos;
if (pos != pt.end()) {
cerr << ",";
}
cerr << endl;
}
cerr << indent(level) << " }";
}
return;
}
int main(int, char*[]) {
// first, make a json file:
string tagfile = "testing2.pt";
ptree pt1;
pt1.put("object1.type","ASCII");
pt1.put("object2.type","INT64");
pt1.put("object3.type","DOUBLE");
pt1.put("object1.value","one");
pt1.put("object2.value","2");
pt1.put("object3.value","3.0");
write_json(tagfile, pt1);
ptree pt;
bool success = true;
try {
read_json(tagfile, pt);
printTree(pt, 0);
cerr << endl;
}catch(const json_parser_error &jpe){
//do error handling
success = false
}
return success;
}
यहाँ आउटपुट है:
[email protected] (blockbuster): a.out
{
"object1":
{
"type": "ASCII",
"value": "one"
},
"object2":
{
"type": "INT64",
"value": "2"
},
"object3":
{
"type": "DOUBLE",
"value": "3.0"
}
}
[email protected] (blockbuster): cat testing2.pt
{
"object1":
{
"type": "ASCII",
"value": "one"
},
"object2":
{
"type": "INT64",
"value": "2"
},
"object3":
{
"type": "DOUBLE",
"value": "3.0"
}
}
मैं दोपहर में परीक्षण करूंगा ... आह, ऐसा नहीं लगता था कि यह इतना आसान था ... मैं आपको जल्द ही बता दूंगा :) – Andry
ठीक है, लेकिन इटेटरेटर .... यह फिर से क्या करता है ???? एक ptree ???? – Andry
पीटीआरई का शीर्ष स्तर, सभी पत्तियों को फिर से करने के लिए आपको इसे फिर से करने की आवश्यकता है –