mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2025-09-10 05:14:58 -04:00
Created Home (markdown)
commit
2e53b16d1e
101
Home.md
Normal file
101
Home.md
Normal file
@ -0,0 +1,101 @@
|
||||
Introduction
|
||||
------------
|
||||
JSON (JavaScript Object Notation) 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:
|
||||
```json
|
||||
// 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 }
|
||||
}
|
||||
```
|
||||
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.
|
||||
|
||||
Code example
|
||||
------------
|
||||
```cpp
|
||||
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;
|
||||
```
|
||||
Build instructions
|
||||
------------------
|
||||
The build instructions are located in the file [`README.md`](https://github.com/jacobsa/jsoncpp/blob/master/README.md) in the top-directory of the project.
|
||||
|
||||
What's New?
|
||||
-----------
|
||||
The description of latest changes can be found in [`NEWS.txt`](https://github.com/jacobsa/jsoncpp/blob/master/NEWS.txt) in the top-directory of the project.
|
||||
|
||||
**TODO**: Move to wiki.
|
||||
|
||||
Related links
|
||||
-------------
|
||||
* [JSON](http://www.json.org/) Specification and alternate language implementations.
|
||||
* [YAML](http://www.yaml.org/) A data format designed for human readability.
|
||||
* [UTF-8](http://www.cl.cam.ac.uk/~mgk25/unicode.html) and Unicode FAQ.
|
||||
|
||||
Old project links
|
||||
-----------------
|
||||
* https://sourceforge.net/projects/jsoncpp/
|
||||
* http://jsoncpp.sourceforge.net
|
||||
* http://sourceforge.net/projects/jsoncpp/files/
|
||||
* http://jsoncpp.svn.sourceforge.net/svnroot/jsoncpp/trunk/
|
||||
* http://jsoncpp.sourceforge.net/old.html
|
||||
|
||||
License
|
||||
-------
|
||||
See file [`LICENSE`](https://github.com/jacobsa/jsoncpp/blob/master/LICENSE) in the top-directory of the project.
|
||||
Basically JsonCpp is licensed under MIT license, or public domain if desired and recognized in your jurisdiction.
|
Loading…
x
Reference in New Issue
Block a user