Introduction
JAULA is a library for integrating JSON (RFC4627) data within c++ projects. This means serializing c++ native data into a stream with JSON format as well as reading a stream containing JSON formatted data into c++ native data types.
System requirements have focused on an standard GNU C++ development environment and STL has been thoroughly used all along the library development and API so, a minimun knowledge about abstract containers and auto-pointers could be required for a complete understanding of the library behaviour.
This guide aims to provide an in deep understanding of the library from the perspective of a developer who is trying to use it for its own applications.
Audience
This guide aims to provide an in deep understanding of the library from the perspective of a developer who is trying to use it for its own applications so, the intended audience are c++ developers interested in JSON data interchange.
System requirements have focused on an standard GNU C++ development environment and STL has been thoroughly used all along the library development and API so, a minimun knowledge about abstract containers and auto-pointers could be required for a complete understanding of the library behaviour.
Besides this, a minimun knowledge of autotools could be of help in order to ease linking the library within any paritcular application.
The next section provides a list of references to documents where you can get mor information about these particular subjects.
Related Documents
This section lists a set of documents that complements or is related with the material exposed in this guide.
- Jaula documentation
- JSON documentation
- C++ and STL documentation
- autotools documentation
Known Restrictions
As good as telling what the libray does is to tell what it doesn't and this section lists known limitations or unexpected bahavoiurs you may find using this library as to be warned about it.
- wide characters support
- This release of the library does not support wide characters (characters that require more than 8 bits for representing its value) data for C++ as all string values are stored in STL std::string objects, although it can deal with Unicode characters for JSON data. What it means is that, at the time of generating JSON data, as there is no way to express wide character strings, all the JSON formatted strings will result in 8 bits per character repesentation and that, at the time of parsing JSON formatted data into C++, unicode characters wider than 8 bits will be correctly read but only the least significant byte for each character will be stored in the resulting C++ string.
- floating point and integer numeric values
- As it is explained in the data values section, in order to ease conversion to and form C++ numeric data, two separate numeric values containers have been created, one for fixed point integer values and other for floating point quantites. This restriction is not imposed by JSON itself that indifferently express fixed and floating point quantities as numeric values. At time of generating JSON data, this restriction is generally trivial as you can always use the floating point numeric value container for any quantity and, if this quantity results in an integer value, the resulting JSON generated value will be correctly expressed but, at the time of parsing JSON data, you may expect the integer or the floating point value container read for a quantity depending on the particular data value read and it will be up to the user to determine (usually via dynamic casting) which value conatiner was used by the parsing process.