JSON (JavaScript Object Notation). More...
Classes | |
class | CharReader |
Interface for reading JSON from a char array. More... | |
class | CharReaderBuilder |
Build a CharReader implementation. More... | |
class | Exception |
Base class for all exceptions we throw. More... | |
class | Features |
Configuration passed to reader and writer. More... | |
class | LogicError |
Exceptions thrown by JSON_ASSERT/JSON_FAIL macros. More... | |
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 | RuntimeError |
Exceptions which the user cannot easily avoid. More... | |
class | SecureAllocator |
class | StaticString |
Lightweight wrapper to tag static string. More... | |
class | StreamWriter |
Usage: More... | |
class | StreamWriterBuilder |
Build a StreamWriter implementation. 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... | |
Typedefs | |
typedef int | Int |
typedef unsigned int | UInt |
typedef __int64 | Int64 |
typedef unsigned __int64 | UInt64 |
typedef Int64 | LargestInt |
typedef UInt64 | LargestUInt |
template<typename T > | |
using | Allocator = typename std::conditional< 0, 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 std::auto_ptr< CharReader > | CharReaderPtr |
typedef char | UIntToStringBuffer[uintToStringBufferSize] |
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 } |
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 > &) |
class | __declspec (deprecated("Use CharReader and CharReaderBuilder instead.")) Reader |
Unserialize a JSON document into a Value. More... | |
bool | parseFromStream (CharReader::Factory const &, IStream &, Value *root, String *errs) |
Consume entire stream and use its begin/end. More... | |
IStream & | operator>> (IStream &, Value &) |
Read from 'sin' into 'root'. More... | |
__declspec (noreturn) void throwRuntimeError(String const &msg) | |
used internally More... | |
void | swap (Value &a, Value &b) |
String | writeString (StreamWriter::Factory const &factory, Value const &root) |
Write into stringstream, then return string, for convenience. More... | |
class | __declspec (deprecated("Use StreamWriter instead")) Writer |
Abstract class for writers. More... | |
class __declspec(deprecated("Use StreamWriterBuilder instead")) FastWriter class __declspec(deprecated("Use StreamWriterBuilder instead")) StyledWriter class | __declspec (deprecated("Use StreamWriterBuilder instead")) StyledStreamWriter |
Outputs a Value in JSON format without formatting (not human friendly). 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... | |
static void | getValidReaderKeys (std::set< String > *valid_keys) |
static char | getDecimalPoint () |
static String | codePointToUTF8 (unsigned int cp) |
Converts a unicode code-point to UTF-8. More... | |
static void | uintToString (LargestUInt value, char *¤t) |
Converts an unsigned integer to string. More... | |
template<typename Iter > | |
Iter | fixNumericLocale (Iter begin, Iter end) |
Change ',' to '. More... | |
template<typename Iter > | |
void | fixNumericLocaleInput (Iter begin, Iter end) |
template<typename Iter > | |
Iter | 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 '. More... | |
template<typename T > | |
static std::unique_ptr< T > | cloneUnique (const std::unique_ptr< T > &p) |
template<typename T , typename U > | |
static bool | InRange (double d, T min, U max) |
static char * | duplicateStringValue (const char *value, size_t length) |
Duplicates the specified string value. More... | |
static char * | duplicateAndPrefixStringValue (const char *value, unsigned int length) |
static void | decodePrefixedString (bool isPrefixed, char const *prefixed, unsigned *length, char const **value) |
static void | releasePrefixedStringValue (char *value) |
Free the string duplicated by duplicateStringValue()/duplicateAndPrefixStringValue(). More... | |
static void | releaseStringValue (char *value, unsigned) |
static bool | IsIntegral (double d) |
static bool | isAnyCharRequiredQuoting (char const *s, size_t n) |
static unsigned int | utf8ToCodepoint (const char *&s, const char *e) |
static String | toHex16Bit (unsigned int x) |
static String | valueToQuotedStringN (const char *value, unsigned length, bool emitUTF8=false) |
static void | getValidWriterKeys (std::set< String > *valid_keys) |
Variables | |
static const char | hex2 [] |
JSON (JavaScript Object Notation).
using Json::Allocator = typedef typename std::conditional< 0 , SecureAllocator<T>, std::allocator<T> >::type |
typedef unsigned int Json::ArrayIndex |
Definition at line 29 of file forwards.h.
typedef std::auto_ptr<CharReader> Json::CharReaderPtr |
Definition at line 57 of file json_reader.cpp.
typedef __int64 Json::Int64 |
using Json::IStream = typedef std::istream |
using Json::IStringStream = typedef std::basic_istringstream<String::value_type, String::traits_type, String::allocator_type> |
typedef Int64 Json::LargestInt |
typedef UInt64 Json::LargestUInt |
using Json::OStream = typedef std::ostream |
using Json::OStringStream = typedef std::basic_ostringstream<String::value_type, String::traits_type, String::allocator_type> |
typedef std::auto_ptr<StreamWriter> Json::StreamWriterPtr |
Definition at line 89 of file json_writer.cpp.
using Json::String = typedef std::basic_string<char, std::char_traits<char>, Allocator<char> > |
typedef unsigned int Json::UInt |
typedef unsigned __int64 Json::UInt64 |
typedef char Json::UIntToStringBuffer[uintToStringBufferSize] |
Definition at line 74 of file json_tool.h.
anonymous enum |
Enumerator | |
---|---|
uintToStringBufferSize | Constant that specify the size of the buffer that must be passed to uintToString. |
Definition at line 67 of file json_tool.h.
enum Json::PrecisionType |
enum Json::ValueType |
Type of the value held by a Value object.
class Json::__declspec | ( | deprecated("Use CharReader and CharReaderBuilder instead.") | ) |
Unserialize a JSON document into a Value.
An error tagged with where in the JSON text it was encountered.
The offsets give the [start, limit) range of bytes within the text. Note that this is bytes, not codepoints.
Constructs a Reader allowing all features for parsing.
Constructs a Reader allowing the specified feature set for parsing.
Read a Value from a JSON document.
document | UTF-8 encoded string containing the document to read. | |
[out] | root | Contains the root value of the document if it was successfully parsed. |
collectComments | true to collect comment and allow writing them back during serialization, false to discard comments. This parameter is ignored if Features::allowComments_ is false . |
true
if the document was successfully parsed, false
if an error occurred.Read a Value from a JSON document.
beginDoc | Pointer on the beginning of the UTF-8 encoded string of the document to read. | |
endDoc | Pointer on the end of the UTF-8 encoded string of the document to read. Must be >= beginDoc. | |
[out] | root | Contains the root value of the document if it was successfully parsed. |
collectComments | true to collect comment and allow writing them back during serialization, false to discard comments. This parameter is ignored if Features::allowComments_ is false . |
true
if the document was successfully parsed, false
if an error occurred.Parse from input stream.
Returns a user friendly string that list errors in the parsed document.
Returns a user friendly string that list errors in the parsed document.
Returns a vector of structured errors encountered while parsing.
Add a semantic error message.
value | JSON Value location associated with the error |
message | The error message. |
true
if the error was successfully added, false
if the Value offset exceeds the document size.Add a semantic error message with extra context.
value | JSON Value location associated with the error |
message | The error message. |
extra | Additional JSON Value location to contextualize the error |
true
if the error was successfully added, false
if either Value offset exceeds the document size.Return whether there are any errors.
true
if there are no errors to report false
if errors have occurred.Definition at line 37 of file reader.h.
References JSONCPP_DEPRECATED.
class Json::__declspec | ( | deprecated("Use StreamWriter instead") | ) |
Abstract class for writers.
class __declspec (deprecated( "Use StreamWriterBuilder instead" )) FastWriter class __declspec (deprecated( "Use StreamWriterBuilder instead" )) StyledWriter class Json::__declspec | ( | deprecated("Use StreamWriterBuilder instead") | ) |
Outputs a Value in JSON format without formatting (not human friendly).
The JSON document is written in a single line. It is not intended for 'human' consumption, but may be useful to support feature such as RPC where bandwidth is limited.
Writes a Value in JSON format in a human friendly way.
The rules for line break and indent are as follow:
If the Value have comments then they are outputed according to their CommentPlacement.
Writes a Value in JSON format in a human friendly way, to a stream rather than to a string.
The rules for line break and indent are as follow:
If the Value have comments then they are outputed according to their CommentPlacement.
indentation | Each level will be indented by this amount extra. |
Serialize a Value in JSON format.
out | Stream to write to. (Can be ostringstream, e.g.) |
root | Value to serialize. |
Json::__declspec | ( | noreturn | ) | const & |
used internally
Definition at line 210 of file json_value.cpp.
|
static |
Definition at line 54 of file json_value.cpp.
|
inlinestatic |
Converts a unicode code-point to UTF-8.
Definition at line 39 of file json_tool.h.
|
inlinestatic |
Definition at line 155 of file json_value.cpp.
Referenced by Json::Value::asCString(), Json::Value::asString(), Json::Value::getString(), Json::Value::operator<(), and Json::Value::operator==().
|
inlinestatic |
Definition at line 135 of file json_value.cpp.
References JSON_ASSERT_MESSAGE, and Json::Value::maxInt.
Referenced by Json::Value::Value().
|
inlinestatic |
Duplicates the specified string value.
value | Pointer to the string to duplicate. Must be zero-terminated if length is "unknown". |
length | Length of the value. if equals to unknown, then it will be computed using strlen(value). |
Definition at line 117 of file json_value.cpp.
References Json::Value::maxInt.
Iter Json::fixNumericLocale | ( | Iter | begin, |
Iter | end | ||
) |
Change ',' to '.
' everywhere in buffer.
We had a sophisticated way, but it did not work in WinCE.
Definition at line 94 of file json_tool.h.
void Json::fixNumericLocaleInput | ( | Iter | begin, |
Iter | end | ||
) |
Definition at line 103 of file json_tool.h.
References getDecimalPoint().
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 '.
'.
Definition at line 119 of file json_tool.h.
|
inlinestatic |
Definition at line 29 of file json_tool.h.
Referenced by fixNumericLocaleInput().
|
static |
Definition at line 1883 of file json_reader.cpp.
Referenced by Json::CharReaderBuilder::validate().
|
static |
Definition at line 1200 of file json_writer.cpp.
Referenced by Json::StreamWriterBuilder::validate().
|
inlinestatic |
Definition at line 89 of file json_value.cpp.
Referenced by Json::Value::asInt(), Json::Value::asInt64(), Json::Value::asUInt(), Json::Value::asUInt64(), and Json::Value::isConvertibleTo().
|
static |
Definition at line 176 of file json_writer.cpp.
Referenced by valueToQuotedStringN().
|
static |
Definition at line 1308 of file json_value.cpp.
Referenced by Json::Value::isInt(), Json::Value::isInt64(), Json::Value::isIntegral(), Json::Value::isUInt(), and Json::Value::isUInt64().
bool Json::operator!= | ( | const SecureAllocator< T > & | , |
const SecureAllocator< U > & | |||
) |
Definition at line 81 of file allocator.h.
Output using the StyledStreamWriter.
Definition at line 1252 of file json_writer.cpp.
References Json::StreamWriterBuilder::newStreamWriter().
bool Json::operator== | ( | const SecureAllocator< T > & | , |
const SecureAllocator< U > & | |||
) |
Definition at line 76 of file allocator.h.
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. |
Definition at line 1961 of file json_reader.cpp.
References parseFromStream().
bool Json::parseFromStream | ( | CharReader::Factory const & | fact, |
IStream & | sin, | ||
Value * | root, | ||
String * | errs | ||
) |
Consume entire stream and use its begin/end.
Someday we might have a real StreamReader, but for now this is convenient.
Definition at line 1949 of file json_reader.cpp.
References Json::CharReader::Factory::newCharReader().
Referenced by operator>>().
|
inlinestatic |
Free the string duplicated by duplicateStringValue()/duplicateAndPrefixStringValue().
Definition at line 184 of file json_value.cpp.
|
inlinestatic |
Definition at line 185 of file json_value.cpp.
Definition at line 953 of file value.h.
References Json::Value::swap().
Referenced by Json::Value::swap(), Json::Value::swapPayload(), and Json::Value::Value().
|
static |
Definition at line 256 of file json_writer.cpp.
References hex2.
Referenced by valueToQuotedStringN().
|
inlinestatic |
Converts an unsigned integer to string.
value | Unsigned integer to convert to string |
current | Input/Output string buffer. Must have at least uintToStringBufferSize chars free. |
Definition at line 81 of file json_tool.h.
Referenced by valueToString().
|
static |
Definition at line 188 of file json_writer.cpp.
Referenced by valueToQuotedStringN().
String Json::valueToQuotedString | ( | const char * | value | ) |
Definition at line 347 of file json_writer.cpp.
References valueToQuotedStringN().
|
static |
Definition at line 267 of file json_writer.cpp.
References isAnyCharRequiredQuoting(), toHex16Bit(), and utf8ToCodepoint().
Referenced by valueToQuotedString().
String Json::valueToString | ( | bool | value | ) |
Definition at line 174 of file json_writer.cpp.
String Json::valueToString | ( | double | value, |
unsigned int | precision = Value::defaultRealPrecision , |
||
PrecisionType | precisionType = PrecisionType::significantDigits |
||
) |
Definition at line 169 of file json_writer.cpp.
References valueToString().
Definition at line 118 of file json_writer.cpp.
Referenced by Json::Value::asString(), and valueToString().
String Json::valueToString | ( | LargestInt | value | ) |
Definition at line 92 of file json_writer.cpp.
References Json::Value::maxLargestInt, Json::Value::minLargestInt, and uintToString().
String Json::valueToString | ( | LargestUInt | value | ) |
Definition at line 108 of file json_writer.cpp.
References uintToString().
Definition at line 120 of file json_writer.cpp.
References valueToString().
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.
Definition at line 1245 of file json_writer.cpp.
References Json::StreamWriter::Factory::newStreamWriter().
Referenced by Json::Value::toStyledString().
|
static |
Definition at line 239 of file json_writer.cpp.
Referenced by toHex16Bit().