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 | FastWriter |
Outputs a Value in JSON format without formatting (not human friendly). 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 | Reader |
Unserialize a JSON document into a Value. 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 | 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 | |
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 |
using | String = std::basic_string<char, std::char_traits<char>, Allocator<char>> |
using | IStringStream |
using | OStringStream |
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 > &) |
bool | parseFromStream (CharReader::Factory const &, IStream &, Value *root, String *errs) |
Consume entire stream and use its begin/end. | |
IStream & | operator>> (IStream &, Value &) |
Read from 'sin' into 'root'. | |
__declspec (noreturn) void throwRuntimeError(String const &msg) | |
used internally | |
void | swap (Value &a, Value &b) |
String | writeString (StreamWriter::Factory const &factory, Value const &root) |
Write into stringstream, then return string, for convenience. | |
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. | |
static char | getDecimalPoint () |
static String | codePointToUTF8 (unsigned int cp) |
Converts a unicode code-point to UTF-8. | |
static void | uintToString (LargestUInt value, char *¤t) |
Converts an unsigned integer to string. | |
template<typename Iter > | |
Iter | fixNumericLocale (Iter begin, Iter end) |
Change ',' to '. | |
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 '. | |
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. | |
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(). | |
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, size_t length, bool emitUTF8=false) |
Variables | |
static const char | hex2 [] |
JSON (JavaScript Object Notation).
using Json::Allocator |
using Json::ArrayIndex = unsigned int |
Definition at line 32 of file forwards.h.
using Json::CharReaderPtr = std::auto_ptr<CharReader> |
Definition at line 58 of file json_reader.cpp.
using Json::Int64 = __int64 |
using Json::IStream = std::istream |
using Json::IStringStream |
using Json::LargestInt = Int64 |
using Json::LargestUInt = UInt64 |
using Json::OStream = std::ostream |
using Json::OStringStream |
using Json::StreamWriterPtr = std::auto_ptr<StreamWriter> |
Definition at line 91 of file json_writer.cpp.
using Json::String = std::basic_string<char, std::char_traits<char>, Allocator<char>> |
using Json::UInt = unsigned int |
using Json::UInt64 = unsigned __int64 |
using Json::UIntToStringBuffer = char[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.
Json::__declspec | ( | noreturn | ) | const & |
used internally
Definition at line 208 of file json_value.cpp.
|
static |
Definition at line 271 of file json_writer.cpp.
References toHex16Bit().
Referenced by valueToQuotedStringN().
|
static |
Definition at line 267 of file json_writer.cpp.
Referenced by valueToQuotedStringN().
|
static |
Definition at line 52 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 153 of file json_value.cpp.
Referenced by Json::Value::asCString(), Json::Value::asString(), Json::Value::getString(), Json::Value::operator<(), and Json::Value::operator==().
|
static |
Definition at line 180 of file json_writer.cpp.
Referenced by valueToQuotedStringN().
|
inlinestatic |
Definition at line 133 of file json_value.cpp.
References JSON_ASSERT_MESSAGE, and Json::Value::maxInt.
Referenced by Json::Value::Value(), Json::Value::Value(), and 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 115 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, | ||
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 '.
'.
Definition at line 120 of file json_tool.h.
|
inlinestatic |
Definition at line 29 of file json_tool.h.
Referenced by fixNumericLocaleInput().
|
inlinestatic |
Definition at line 87 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 1249 of file json_value.cpp.
References IsIntegral().
Referenced by Json::Value::isInt(), Json::Value::isInt64(), IsIntegral(), Json::Value::isIntegral(), Json::Value::isUInt(), and Json::Value::isUInt64().
bool Json::operator!= | ( | const SecureAllocator< T > & | , |
const SecureAllocator< U > & | ) |
Definition at line 80 of file allocator.h.
Referenced by Json::Value::Value().
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 75 of file allocator.h.
Referenced by Json::Value::Value().
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 1982 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 1970 of file json_reader.cpp.
References Json::CharReader::Factory::newCharReader().
Referenced by operator>>().
|
inlinestatic |
Free the string duplicated by duplicateStringValue()/duplicateAndPrefixStringValue().
Definition at line 182 of file json_value.cpp.
|
inlinestatic |
Definition at line 183 of file json_value.cpp.
Definition at line 925 of file value.h.
References swap(), and Json::Value::swap().
Referenced by swap(), Json::Value::Value(), and Json::Value::Value().
|
static |
Definition at line 256 of file json_writer.cpp.
References hex2.
Referenced by appendHex().
|
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(), and valueToString().
|
static |
Definition at line 188 of file json_writer.cpp.
Referenced by valueToQuotedStringN().
String Json::valueToQuotedString | ( | const char * | value | ) |
Definition at line 352 of file json_writer.cpp.
References valueToQuotedStringN().
|
static |
Definition at line 275 of file json_writer.cpp.
References appendHex(), appendRaw(), doesAnyCharRequireEscaping(), and utf8ToCodepoint().
Referenced by valueToQuotedString().
String Json::valueToString | ( | bool | value | ) |
Definition at line 178 of file json_writer.cpp.
String Json::valueToString | ( | double | value, |
unsigned int | precision = Value::defaultRealPrecision, | ||
PrecisionType | precisionType = PrecisionType::significantDigits ) |
Definition at line 173 of file json_writer.cpp.
References valueToString().
Definition at line 120 of file json_writer.cpp.
References valueToString().
Referenced by Json::Value::asString(), valueToString(), valueToString(), and valueToString().
String Json::valueToString | ( | LargestInt | value | ) |
Definition at line 94 of file json_writer.cpp.
References Json::Value::maxLargestInt, Json::Value::minLargestInt, and uintToString().
String Json::valueToString | ( | LargestUInt | value | ) |
Definition at line 110 of file json_writer.cpp.
References uintToString().
Definition at line 122 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().