1*44844408SAndroid Build Coastguard Worker #include "json/json.h" 2*44844408SAndroid Build Coastguard Worker #include <fstream> 3*44844408SAndroid Build Coastguard Worker #include <iostream> 4*44844408SAndroid Build Coastguard Worker /** \brief Parse from stream, collect comments and capture error info. 5*44844408SAndroid Build Coastguard Worker * Example Usage: 6*44844408SAndroid Build Coastguard Worker * $g++ readFromStream.cpp -ljsoncpp -std=c++11 -o readFromStream 7*44844408SAndroid Build Coastguard Worker * $./readFromStream 8*44844408SAndroid Build Coastguard Worker * // comment head 9*44844408SAndroid Build Coastguard Worker * { 10*44844408SAndroid Build Coastguard Worker * // comment before 11*44844408SAndroid Build Coastguard Worker * "key" : "value" 12*44844408SAndroid Build Coastguard Worker * } 13*44844408SAndroid Build Coastguard Worker * // comment after 14*44844408SAndroid Build Coastguard Worker * // comment tail 15*44844408SAndroid Build Coastguard Worker */ main(int argc,char * argv[])16*44844408SAndroid Build Coastguard Workerint main(int argc, char* argv[]) { 17*44844408SAndroid Build Coastguard Worker Json::Value root; 18*44844408SAndroid Build Coastguard Worker std::ifstream ifs; 19*44844408SAndroid Build Coastguard Worker ifs.open(argv[1]); 20*44844408SAndroid Build Coastguard Worker 21*44844408SAndroid Build Coastguard Worker Json::CharReaderBuilder builder; 22*44844408SAndroid Build Coastguard Worker builder["collectComments"] = true; 23*44844408SAndroid Build Coastguard Worker JSONCPP_STRING errs; 24*44844408SAndroid Build Coastguard Worker if (!parseFromStream(builder, ifs, &root, &errs)) { 25*44844408SAndroid Build Coastguard Worker std::cout << errs << std::endl; 26*44844408SAndroid Build Coastguard Worker return EXIT_FAILURE; 27*44844408SAndroid Build Coastguard Worker } 28*44844408SAndroid Build Coastguard Worker std::cout << root << std::endl; 29*44844408SAndroid Build Coastguard Worker return EXIT_SUCCESS; 30*44844408SAndroid Build Coastguard Worker } 31