123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /**
- \mainpage
- \section _intro Introduction
- <a HREF="http://www.json.org/">JSON (JavaScript Object Notation)</a>
- is a lightweight data-interchange format.
- It can represent integer, real number, string, an ordered sequence of value, and
- a collection of name/value pairs.
- Here is an example of JSON data:
- \verbatim
- // Configuration options
- {
- // Default encoding for text
- "encoding" : "UTF-8",
-
- // Plug-ins loaded at start-up
- "plug-ins" : [
- "python",
- "c++",
- "ruby"
- ],
-
- // Tab indent size
- "indent" : { "length" : 3, "use_space": true }
- }
- \endverbatim
- \section _features Features
- - read and write JSON document
- - attach C and C++ style comments to element during parsing
- - rewrite JSON document preserving original comments
- Notes: Comments used to be supported in JSON but where removed for
- portability (C like comments are not supported in Python). Since
- comments are useful in configuration/input file, this feature was
- preserved.
- \section _example Code example
- \code
- Json::Value root; // will contains the root value after parsing.
- Json::Reader reader;
- bool parsingSuccessful = reader.parse( config_doc, root );
- if ( !parsingSuccessful )
- {
- // report to the user the failure and their locations in the document.
- std::cout << "Failed to parse configuration\n"
- << reader.getFormattedErrorMessages();
- return;
- }
- // Get the value of the member of root named 'encoding', return 'UTF-8' if there is no
- // such member.
- std::string encoding = root.get("encoding", "UTF-8" ).asString();
- // Get the value of the member of root named 'encoding', return a 'null' value if
- // there is no such member.
- const Json::Value plugins = root["plug-ins"];
- for ( int index = 0; index < plugins.size(); ++index ) // Iterates over the sequence elements.
- loadPlugIn( plugins[index].asString() );
-
- setIndentLength( root["indent"].get("length", 3).asInt() );
- setIndentUseSpace( root["indent"].get("use_space", true).asBool() );
- // ...
- // At application shutdown to make the new configuration document:
- // Since Json::Value has implicit constructor for all value types, it is not
- // necessary to explicitly construct the Json::Value object:
- root["encoding"] = getCurrentEncoding();
- root["indent"]["length"] = getCurrentIndentLength();
- root["indent"]["use_space"] = getCurrentIndentUseSpace();
- Json::StyledWriter writer;
- // Make a new JSON document for the configuration. Preserve original comments.
- std::string outputConfig = writer.write( root );
- // You can also use streams. This will put the contents of any JSON
- // stream at a particular sub-value, if you'd like.
- std::cin >> root["subtree"];
- // And you can write to a stream, using the StyledWriter automatically.
- std::cout << root;
- \endcode
- \section _pbuild Build instructions
- The build instructions are located in the file
- <a HREF="README.txt">README.txt</a> in the top-directory of the project.
- Permanent link to the latest revision of the file in subversion:
- <a HREF="http://jsoncpp.svn.sourceforge.net/viewvc/jsoncpp/trunk/jsoncpp/README.txt?view=markup">latest README.txt</a>
- \section _pdownload Download
- The sources can be downloaded from
- <a HREF="http://sourceforge.net/projects/jsoncpp/files/">SourceForge download page</a>.
- The latest version of the source is available in the project's subversion repository:
- <a HREF="http://jsoncpp.svn.sourceforge.net/svnroot/jsoncpp/trunk/">
- http://jsoncpp.svn.sourceforge.net/svnroot/jsoncpp/trunk/</a>
- To checkout the source, see the following
- <a HREF="http://sourceforge.net/scm/?type=svn&group_id=144446">instructions</a>.
- \section _news What's New?
- The description of latest changes can be found in
- <a HREF="NEWS.txt">NEWS.txt</a> in the top-directory of the project.
- Permanent link to the latest revision of the file in subversion:
- <a HREF="http://svn.sourceforge.net/viewcvs.cgi/jsoncpp/README.txt?view=markup">latest NEWS.txt</a>
- \section _plinks Project links
- - <a HREF="http://jsoncpp.sourceforge.net">json-cpp home</a>
- - <a HREF="http://www.sourceforge.net/projects/jsoncpp/">json-cpp sourceforge project</a>
- \section _rlinks Related links
- - <a HREF="http://www.json.org/">JSON</a> Specification and alternate language implementations.
- - <a HREF="http://www.yaml.org/">YAML</a> A data format designed for human readability.
- - <a HREF="http://www.cl.cam.ac.uk/~mgk25/unicode.html">UTF-8 and Unicode FAQ</a>.
- \section _license License
- See file <a HREF="LICENSE">LICENSE</a> in the top-directory of the project.
- Basically JsonCpp is licensed under MIT license, or public domain if desired
- and recognized in your jurisdiction.
- \author Baptiste Lepilleur <blep@users.sourceforge.net>
- */
|