JSON (JavaScript Object Notation). More...
Data Structures | |
struct | BuiltStyledStreamWriter |
class | CharReader |
class | CharReaderBuilder |
Build a CharReader implementation. More... | |
struct | CommentStyle |
Scoped enums are not available until C++11. More... | |
class | Exception |
class | FastWriter |
Outputs a Value in JSON format without formatting (not human friendly). More... | |
class | Features |
Configuration passed to reader and writer. This configuration object can be used to force the Reader or Writer to behave in a standard conforming way. More... | |
class | LogicError |
class | OurCharReader |
class | OurFeatures |
class | OurReader |
class | Path |
Experimental and untested: represents a "path" to access a node. More... | |
class | PathArgument |
Experimental and untested: represents an element of the "path" to access a node. More... | |
class | Reader |
Unserialize a JSON document into a Value. More... | |
class | RuntimeError |
class | SecureAllocator |
class | StaticString |
Lightweight wrapper to tag static string. More... | |
class | StreamWriter |
class | StreamWriterBuilder |
Build a StreamWriter implementation. More... | |
class | StyledStreamWriter |
Writes a Value in JSON format in a human friendly way, to a stream rather than to a string. More... | |
class | StyledWriter |
Writes a Value in JSON format in a human friendly way. More... | |
class | Value |
Represents a JSON value. More... | |
class | ValueConstIterator |
const iterator for object and array value. More... | |
class | ValueIterator |
Iterator for object and array value. More... | |
class | ValueIteratorBase |
base class for Value iterators. More... | |
class | Writer |
Abstract class for writers. More... | |
Typedefs | |
typedef int | Int |
typedef unsigned int | UInt |
typedef int64_t | Int64 |
typedef uint64_t | UInt64 |
typedef Int64 | LargestInt |
typedef UInt64 | LargestUInt |
template<typename T > | |
using | Allocator = typename std::conditional< JSONCPP_USING_SECURE_MEMORY, SecureAllocator< T >, std::allocator< T >>::type |
using | String = std::basic_string< char, std::char_traits< char >, Allocator< char >> |
using | IStringStream = std::basic_istringstream< String::value_type, String::traits_type, String::allocator_type > |
using | OStringStream = std::basic_ostringstream< String::value_type, String::traits_type, String::allocator_type > |
using | IStream = std::istream |
using | OStream = std::ostream |
typedef unsigned int | ArrayIndex |
typedef char | UIntToStringBuffer[uintToStringBufferSize] |
typedef std::auto_ptr< CharReader > | CharReaderPtr |
typedef std::auto_ptr< StreamWriter > | StreamWriterPtr |
Enumerations | |
enum | ValueType { nullValue = 0, intValue, uintValue, realValue, stringValue, booleanValue, arrayValue, objectValue } |
Type of the value held by a Value object. More... | |
enum | CommentPlacement { commentBefore = 0, commentAfterOnSameLine, commentAfter, numberOfCommentPlacement } |
enum | PrecisionType { significantDigits = 0, decimalPlaces } |
Type of precision for formatting of real values. More... | |
enum | { uintToStringBufferSize = 3 * sizeof(LargestUInt) + 1 } |
enum | { uintToStringBufferSize = 3 * sizeof(LargestUInt) + 1 } |
Functions | |
template<typename T , typename U > | |
bool | operator== (const SecureAllocator< T > &, const SecureAllocator< U > &) |
template<typename T , typename U > | |
bool | operator!= (const SecureAllocator< T > &, const SecureAllocator< U > &) |
void | throwRuntimeError (String const &msg) |
used internally More... | |
void | throwLogicError (String const &msg) |
used internally More... | |
void | swap (Value &a, Value &b) |
bool | parseFromStream (CharReader::Factory const &, IStream &, Value *root, std::string *errs) |
IStream & | operator>> (IStream &, Value &) |
Read from 'sin' into 'root'. More... | |
String | writeString (StreamWriter::Factory const &factory, Value const &root) |
Write into stringstream, then return string, for convenience. A StreamWriter will be created from the factory, used, and then deleted. More... | |
String | valueToString (Int value) |
String | valueToString (UInt value) |
String | valueToString (LargestInt value) |
String | valueToString (LargestUInt value) |
String | valueToString (double value, unsigned int precision=Value::defaultRealPrecision, PrecisionType precisionType=PrecisionType::significantDigits) |
String | valueToString (bool value) |
String | valueToQuotedString (const char *value) |
OStream & | operator<< (OStream &, const Value &root) |
Output using the StyledStreamWriter. More... | |
template<typename Iter > | |
Iter | fixNumericLocale (Iter begin, Iter end) |
template<typename Iter > | |
void | fixNumericLocaleInput (Iter begin, Iter end) |
template<typename Iter > | |
Iter | fixZerosInTheEnd (Iter begin, Iter end) |
bool | parseFromStream (CharReader::Factory const &fact, IStream &sin, Value *root, String *errs) |
JSON (JavaScript Object Notation).
using Json::Allocator = typedef typename std::conditional< 0 , SecureAllocator<T>, std::allocator<T>>::type |
typedef unsigned int Json::ArrayIndex |
typedef std::auto_ptr< CharReader > Json::CharReaderPtr |
typedef int Json::Int |
typedef int64_t Json::Int64 |
typedef std::istream Json::IStream |
typedef std::basic_istringstream< String::value_type, String::traits_type, String::allocator_type > Json::IStringStream |
typedef Int64 Json::LargestInt |
typedef UInt64 Json::LargestUInt |
typedef std::ostream Json::OStream |
typedef std::basic_ostringstream< String::value_type, String::traits_type, String::allocator_type > Json::OStringStream |
typedef std::auto_ptr< StreamWriter > Json::StreamWriterPtr |
using Json::String = typedef std::basic_string<char, std::char_traits<char>, Allocator<char>> |
typedef unsigned int Json::UInt |
typedef uint64_t Json::UInt64 |
typedef char Json::UIntToStringBuffer |
anonymous enum |
anonymous enum |
enum Json::PrecisionType |
enum Json::ValueType |
Type of the value held by a Value object.
Iter Json::fixNumericLocale | ( | Iter | begin, |
Iter | end | ||
) |
Change ',' to '.' everywhere in buffer.
We had a sophisticated way, but it did not work in WinCE.
void Json::fixNumericLocaleInput | ( | Iter | begin, |
Iter | end | ||
) |
Iter Json::fixZerosInTheEnd | ( | Iter | begin, |
Iter | end | ||
) |
Return iterator that would be the new end of the range [begin,end), if we were to delete zeros in the end of string, but not the last zero before '.'.
bool Json::operator!= | ( | const SecureAllocator< T > & | , |
const SecureAllocator< U > & | |||
) |
Output using the StyledStreamWriter.
bool Json::operator== | ( | const SecureAllocator< T > & | , |
const SecureAllocator< U > & | |||
) |
Read from 'sin' into 'root'.
Always keep comments from the input JSON.
This can be used to read a file into a particular sub-object. For example:
Result:
{ "dir": { "file": { // The input stream JSON would be nested here. } } }
std::exception | on parse error. |
bool Json::parseFromStream | ( | CharReader::Factory const & | , |
IStream & | , | ||
Value * | root, | ||
std::string * | errs | ||
) |
Consume entire stream and use its begin/end. Someday we might have a real StreamReader, but for now this is convenient.
bool Json::parseFromStream | ( | CharReader::Factory const & | fact, |
IStream & | sin, | ||
Value * | root, | ||
String * | errs | ||
) |
JSONCPP_NORETURN void Json::throwLogicError | ( | String const & | msg | ) |
used internally
JSONCPP_NORETURN void Json::throwRuntimeError | ( | String const & | msg | ) |
used internally
String Json::valueToQuotedString | ( | const char * | value | ) |
String Json::valueToString | ( | LargestInt | value | ) |
String Json::valueToString | ( | LargestUInt | value | ) |
String Json::valueToString | ( | double | value, |
unsigned int | precision = Value::defaultRealPrecision , |
||
PrecisionType | precisionType = PrecisionType::significantDigits |
||
) |
String Json::valueToString | ( | bool | value | ) |
String Json::writeString | ( | StreamWriter::Factory const & | factory, |
Value const & | root | ||
) |
Write into stringstream, then return string, for convenience. A StreamWriter will be created from the factory, used, and then deleted.