xref: /aosp_15_r20/external/jsoncpp/example/readFromStream/readFromStream.cpp (revision 4484440890e2bc6e07362b4feaf15601abfe0071)
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 Worker int 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