Home | History | Annotate | Download | only in doc
      1 /**
      2 \mainpage
      3 \section _intro Introduction
      4 
      5 <a HREF="http://www.json.org/">JSON (JavaScript Object Notation)</a>
      6  is a lightweight data-interchange format.
      7 It can represent integer, real number, string, an ordered sequence of value, and
      8 a collection of name/value pairs.
      9 
     10 Here is an example of JSON data:
     11 \verbatim
     12 // Configuration options
     13 {
     14     // Default encoding for text
     15     "encoding" : "UTF-8",
     16 
     17     // Plug-ins loaded at start-up
     18     "plug-ins" : [
     19         "python",
     20         "c++",
     21         "ruby"
     22         ],
     23 
     24     // Tab indent size
     25     "indent" : { "length" : 3, "use_space": true }
     26 }
     27 \endverbatim
     28 <code>jsoncpp</code> supports comments as <i>meta-data</i>.
     29 
     30 \section _features Features
     31 - read and write JSON document
     32 - attach C++ style comments to element during parsing
     33 - rewrite JSON document preserving original comments
     34 
     35 Notes: Comments used to be supported in JSON but where removed for
     36 portability (C like comments are not supported in Python). Since
     37 comments are useful in configuration/input file, this feature was
     38 preserved.
     39 
     40 \section _example Code example
     41 
     42 \code
     43 Json::Value root;   // will contains the root value after parsing.
     44 Json::Reader reader;
     45 bool parsingSuccessful = reader.parse( config_doc, root );
     46 if ( !parsingSuccessful )
     47 {
     48     // report to the user the failure and their locations in the document.
     49     std::cout  << "Failed to parse configuration\n"
     50                << reader.getFormattedErrorMessages();
     51     return;
     52 }
     53 
     54 // Get the value of the member of root named 'encoding', return 'UTF-8' if there is no
     55 // such member.
     56 std::string encoding = root.get("encoding", "UTF-8" ).asString();
     57 // Get the value of the member of root named 'encoding', return a 'null' value if
     58 // there is no such member.
     59 const Json::Value plugins = root["plug-ins"];
     60 for ( int index = 0; index < plugins.size(); ++index )  // Iterates over the sequence elements.
     61    loadPlugIn( plugins[index].asString() );
     62 
     63 setIndentLength( root["indent"].get("length", 3).asInt() );
     64 setIndentUseSpace( root["indent"].get("use_space", true).asBool() );
     65 
     66 // ...
     67 // At application shutdown to make the new configuration document:
     68 // Since Json::Value has implicit constructor for all value types, it is not
     69 // necessary to explicitly construct the Json::Value object:
     70 root["encoding"] = getCurrentEncoding();
     71 root["indent"]["length"] = getCurrentIndentLength();
     72 root["indent"]["use_space"] = getCurrentIndentUseSpace();
     73 
     74 Json::StyledWriter writer;
     75 // Make a new JSON document for the configuration. Preserve original comments.
     76 std::string outputConfig = writer.write( root );
     77 
     78 // You can also use streams.  This will put the contents of any JSON
     79 // stream at a particular sub-value, if you'd like.
     80 std::cin >> root["subtree"];
     81 
     82 // And you can write to a stream, using the StyledWriter automatically.
     83 std::cout << root;
     84 \endcode
     85 
     86 \section _pbuild Build instructions
     87 The build instructions are located in the file
     88 <a HREF="https://github.com/open-source-parsers/jsoncpp/blob/master/README.md">README.md</a> in the top-directory of the project.
     89 
     90 The latest version of the source is available in the project's GitHub repository:
     91 <a HREF="https://github.com/open-source-parsers/jsoncpp/">
     92 jsoncpp</a>
     93 
     94 \section _news What's New?
     95 The description of latest changes can be found in
     96 <a HREF="https://github.com/open-source-parsers/jsoncpp/wiki/NEWS">
     97   the NEWS wiki
     98 </a>.
     99 
    100 \section _rlinks Related links
    101 - <a HREF="http://www.json.org/">JSON</a> Specification and alternate language implementations.
    102 - <a HREF="http://www.yaml.org/">YAML</a> A data format designed for human readability.
    103 - <a HREF="http://www.cl.cam.ac.uk/~mgk25/unicode.html">UTF-8 and Unicode FAQ</a>.
    104 
    105 \section _plinks Old project links
    106 - <a href="https://sourceforge.net/projects/jsoncpp/">https://sourceforge.net/projects/jsoncpp/</a>
    107 - <a href="http://jsoncpp.sourceforge.net">http://jsoncpp.sourceforge.net</a>
    108 - <a href="http://sourceforge.net/projects/jsoncpp/files/">http://sourceforge.net/projects/jsoncpp/files/</a>
    109 - <a href="http://jsoncpp.svn.sourceforge.net/svnroot/jsoncpp/trunk/">http://jsoncpp.svn.sourceforge.net/svnroot/jsoncpp/trunk/</a>
    110 - <a href="http://jsoncpp.sourceforge.net/old.html">http://jsoncpp.sourceforge.net/old.html</a>
    111 
    112 \section _license License
    113 See file <a href="https://github.com/open-source-parsers/jsoncpp/blob/master/LICENSE"><code>LICENSE</code></a> in the top-directory of the project.
    114 
    115 Basically JsonCpp is licensed under MIT license, or public domain if desired
    116 and recognized in your jurisdiction.
    117 
    118 \author Baptiste Lepilleur <blep (at) users.sourceforge.net> (originator)
    119 */
    120