JSON (JavaScript Object Notation). More...
Classes | |
| class | SecureAllocator |
| class | Features |
| Configuration passed to reader and writer. More... | |
| 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 | RuntimeError |
| Exceptions which the user cannot easily avoid. More... | |
| class | LogicError |
| Exceptions thrown by JSON_ASSERT/JSON_FAIL macros. More... | |
| class | StaticString |
| Lightweight wrapper to tag static string. More... | |
| class | Value |
| Represents a JSON value. More... | |
| class | PathArgument |
| Experimental and untested: represents an element of the "path" to access a node. More... | |
| class | Path |
| Experimental and untested: represents a "path" to access a node. More... | |
| class | ValueIteratorBase |
| base class for Value iterators. More... | |
| class | ValueConstIterator |
| const iterator for object and array value. More... | |
| class | ValueIterator |
| Iterator for object and array value. More... | |
| class | StreamWriter |
| Usage: More... | |
| class | StreamWriterBuilder |
| Build a StreamWriter implementation. More... | |
Typedefs | |
| using | Int = int |
| using | UInt = unsigned int |
| using | Int64 = __int64 |
| using | UInt64 = unsigned __int64 |
| using | LargestInt = Int64 |
| using | LargestUInt = UInt64 |
| 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 |
| using | ArrayIndex = unsigned int |
| using | CharReaderPtr = std::auto_ptr< CharReader > |
| using | UIntToStringBuffer = char[uintToStringBufferSize] |
| using | StreamWriterPtr = std::auto_ptr< StreamWriter > |
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 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, unsigned int precision) |
| 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 | doesAnyCharRequireEscaping (char const *s, size_t n) |
| static unsigned int | utf8ToCodepoint (const char *&s, const char *e) |
| static String | toHex16Bit (unsigned int x) |
| static void | appendRaw (String &result, unsigned ch) |
| static void | appendHex (String &result, unsigned ch) |
| static String | valueToQuotedStringN (const char *value, unsigned length, bool emitUTF8=false) |
Variables | |
| static const char | hex2 [] |
JSON (JavaScript Object Notation).
| using Json::Allocator = typedef typename std::conditional< 0 , SecureAllocator<T>, std::allocator<T> >::type |
| using Json::ArrayIndex = typedef unsigned int |
| using Json::CharReaderPtr = typedef std::auto_ptr<CharReader> |
| using Json::Int = typedef int |
| using Json::Int64 = typedef __int64 |
| using Json::IStream = typedef std::istream |
| using Json::IStringStream = typedef std::basic_istringstream<String::value_type, String::traits_type, String::allocator_type> |
| using Json::LargestInt = typedef Int64 |
| using Json::LargestUInt = typedef UInt64 |
| using Json::OStream = typedef std::ostream |
| using Json::OStringStream = typedef std::basic_ostringstream<String::value_type, String::traits_type, String::allocator_type> |
| using Json::StreamWriterPtr = typedef std::auto_ptr<StreamWriter> |
| using Json::String = typedef std::basic_string<char, std::char_traits<char>, Allocator<char> > |
| using Json::UInt = typedef unsigned int |
| using Json::UInt64 = typedef unsigned __int64 |
| using Json::UIntToStringBuffer = typedef char[uintToStringBufferSize] |
| anonymous enum |
| 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.| 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
|
static |
|
static |
|
static |
|
inlinestatic |
Converts a unicode code-point to UTF-8.
|
inlinestatic |
|
static |
|
inlinestatic |
|
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). |
| 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, | ||
| unsigned int | precision | ||
| ) |
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 '.
'.
|
inlinestatic |
|
inlinestatic |
|
static |
| 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 & | 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.
|
inlinestatic |
Free the string duplicated by duplicateStringValue()/duplicateAndPrefixStringValue().
|
inlinestatic |
|
static |
|
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. |
|
static |
| String Json::valueToQuotedString | ( | const char * | value | ) |
|
static |
| String Json::valueToString | ( | bool | value | ) |
| String Json::valueToString | ( | double | value, |
| unsigned int | precision = Value::defaultRealPrecision, |
||
| PrecisionType | precisionType = PrecisionType::significantDigits |
||
| ) |
| String Json::valueToString | ( | LargestInt | value | ) |
| String Json::valueToString | ( | LargestUInt | 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.
|
static |