JsonCpp project page | Classes | Namespace | JsonCpp home page

Classes | Typedefs | Enumerations | Functions | Variables
Json Namespace Reference

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)
String | valueToQuotedString (const char *value, size_t length)
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 *&current)
| 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 []

## Detailed Description

JSON (JavaScript Object Notation).

## Typedef Documentation

## ◆ Allocator

template<typename T>

using Json::Allocator

Initial value:
typename std::conditional< 0 , SecureAllocator<T>,
std::allocator<T>>::type

Definition at line 129 of file config.h.

## ◆ ArrayIndex

using Json::ArrayIndex = unsigned int

Definition at line 32 of file forwards.h.

## ◆ CharReaderPtr

using Json::CharReaderPtr = std::auto_ptr<CharReader>

Definition at line 59 of file json_reader.cpp.

## ◆ Int

using Json::Int = int

Definition at line 108 of file config.h.

## ◆ Int64

using Json::Int64 = __int64

Definition at line 117 of file config.h.

## ◆ IStream

using Json::IStream = std::istream

Definition at line 139 of file config.h.

## ◆ IStringStream

using Json::IStringStream

Initial value:
std::basic_istringstream<String::value_type, String::traits_type,
String::allocator_type>

Definition at line 133 of file config.h.

## ◆ LargestInt

using Json::LargestInt = Int64

Definition at line 123 of file config.h.

## ◆ LargestUInt

using Json::LargestUInt = UInt64

Definition at line 124 of file config.h.

## ◆ OStream

using Json::OStream = std::ostream

Definition at line 140 of file config.h.

## ◆ OStringStream

using Json::OStringStream

Initial value:
std::basic_ostringstream<String::value_type, String::traits_type,
String::allocator_type>

Definition at line 136 of file config.h.

## ◆ StreamWriterPtr

using Json::StreamWriterPtr = std::auto_ptr<StreamWriter>

Definition at line 91 of file json_writer.cpp.

## ◆ String

using Json::String = std::basic_string<char, std::char_traits<char>, Allocator<char>>

Definition at line 132 of file config.h.

## ◆ UInt

using Json::UInt = unsigned int

Definition at line 109 of file config.h.

## ◆ UInt64

using Json::UInt64 = unsigned __int64

Definition at line 118 of file config.h.

## ◆ UIntToStringBuffer

using Json::UIntToStringBuffer = char[uintToStringBufferSize]

Definition at line 74 of file json_tool.h.

## Enumeration Type Documentation

## ◆ anonymous enum

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.

## ◆ CommentPlacement

enum Json::CommentPlacement

Enumerator
commentBefore | a comment placed on the line before a value
commentAfterOnSameLine | a comment just after a value on the same line
commentAfter | a comment on the line after a value (only make sense for
numberOfCommentPlacement | root value)

Definition at line 119 of file value.h.

## ◆ PrecisionType

enum Json::PrecisionType

Type of precision for formatting of real values.

Enumerator
significantDigits | we set max number of significant digits in string
decimalPlaces | we set max number of digits after "." in string

Definition at line 129 of file value.h.

## ◆ ValueType

enum Json::ValueType

Type of the value held by a Value object.

Enumerator
nullValue | 'null' value
intValue | signed integer value
uintValue | unsigned integer value
realValue | double value
stringValue | UTF-8 string value.
booleanValue | bool value
arrayValue | array value (ordered list)
objectValue | object value (collection of name/value pairs).

Definition at line 108 of file value.h.

## Function Documentation

## ◆ __declspec()

Json::__declspec | ( | noreturn |  | ) | const &

used internally

Definition at line 208 of file json_value.cpp.

References JSONCPP_NORETURN.

## ◆ appendHex()

static void Json::appendHex | ( | String & | result,
|  | unsigned | ch )
| static

Definition at line 272 of file json_writer.cpp.

References toHex16Bit().

Referenced by valueToQuotedStringN().

Here is the caller graph for this function:

## ◆ appendRaw()

static void Json::appendRaw | ( | String & | result,
|  | unsigned | ch )
| static

Definition at line 268 of file json_writer.cpp.

Referenced by valueToQuotedStringN().

Here is the caller graph for this function:

## ◆ cloneUnique()

template<typename T>

static std::unique_ptr< T > Json::cloneUnique | ( | const std::unique_ptr< T > & | p | ) |
| static

Definition at line 52 of file json_value.cpp.

## ◆ codePointToUTF8()

static String Json::codePointToUTF8 | ( | unsigned int | cp | ) |
| inline static

Converts a unicode code-point to UTF-8.

Definition at line 39 of file json_tool.h.

## ◆ decodePrefixedString()

static void Json::decodePrefixedString | ( | bool | isPrefixed,
|  | char const * | prefixed,
|  | unsigned * | length,
|  | char const ** | value )
| inline static

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==().

Here is the caller graph for this function:

## ◆ doesAnyCharRequireEscaping()

static bool Json::doesAnyCharRequireEscaping | ( | char const * | s,
|  | size_t | n )
| static

Definition at line 181 of file json_writer.cpp.

Referenced by valueToQuotedStringN().

Here is the caller graph for this function:

## ◆ duplicateAndPrefixStringValue()

static char * Json::duplicateAndPrefixStringValue | ( | const char * | value,
|  | unsigned int | length )
| inline static

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().

Here is the caller graph for this function:

## ◆ duplicateStringValue()

static char * Json::duplicateStringValue | ( | const char * | value,
|  | size_t | length )
| inline static

Duplicates the specified string value.

Parameters

  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).

Returns
  Pointer on the duplicate instance of string.

Definition at line 115 of file json_value.cpp.

References Json::Value::maxInt.

## ◆ fixNumericLocale()

template<typename Iter>

Iter Json::fixNumericLocale | ( | Iter | begin,
|  | Iter | end )

Change ',' to '.

' everywhere in buffer.

We had a sophisticated way, but it did not work in WinCE.

See also
  https://github.com/open-source-parsers/jsoncpp/pull/9

Definition at line 94 of file json_tool.h.

## ◆ fixNumericLocaleInput()

template<typename Iter>

void Json::fixNumericLocaleInput | ( | Iter | begin,
|  | Iter | end )

Definition at line 103 of file json_tool.h.

References getDecimalPoint().

## ◆ fixZerosInTheEnd()

template<typename Iter>

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.

## ◆ getDecimalPoint()

static char Json::getDecimalPoint | ( |  | ) |
| inline static

Definition at line 29 of file json_tool.h.

Referenced by fixNumericLocaleInput().

Here is the caller graph for this function:

## ◆ InRange()

template<typename T, typename U>

static bool Json::InRange | ( | double | d,
|  | T | min,
|  | U | max )
| inline static

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().

Here is the caller graph for this function:

## ◆ IsIntegral()

static bool Json::IsIntegral | ( | double | d | ) |
| static

Definition at line 1252 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().

Here is the caller graph for this function:

## ◆ operator!=()

template<typename T, typename U>

bool Json::operator!= | ( | const SecureAllocator< T > & | ,
|  | const SecureAllocator< U > & | )

Definition at line 83 of file allocator.h.

## ◆ operator<<()

OStream & Json::operator<< | ( | OStream & | sout,
|  | const Value & | root )

Output using the StyledStreamWriter.

See also
  Json::operator>>()

Definition at line 1257 of file json_writer.cpp.

References Json::StreamWriterBuilder::newStreamWriter(), and Json::StreamWriter::write().

## ◆ operator==()

template<typename T, typename U>

bool Json::operator== | ( | const SecureAllocator< T > & | ,
|  | const SecureAllocator< U > & | )

Definition at line 78 of file allocator.h.

## ◆ operator>>()

IStream & Json::operator>> | ( | IStream & | sin,
|  | Value & | root )

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:

Json::Value root;
cin >> root["dir"]["file"];
cout << root;
Json::Value
Represents a JSON value.
Definition value.h:194

Result:

    * {
    * "dir": {
    *    "file": {
    *    // The input stream JSON would be nested here.
    *    }
    * }
    * }
    *

Exceptions

  std::exception | on parse error.

See also
  Json::operator<<()

Definition at line 2006 of file json_reader.cpp.

References parseFromStream().

## ◆ 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 1994 of file json_reader.cpp.

References Json::CharReader::Factory::newCharReader(), and Json::CharReader::parse().

Referenced by operator>>().

Here is the caller graph for this function:

## ◆ releasePrefixedStringValue()

static void Json::releasePrefixedStringValue | ( | char * | value | ) |
| inline static

Free the string duplicated by duplicateStringValue()/duplicateAndPrefixStringValue().

Definition at line 182 of file json_value.cpp.

## ◆ releaseStringValue()

static void Json::releaseStringValue | ( | char * | value,
|  | unsigned | )
| inline static

Definition at line 183 of file json_value.cpp.

## ◆ swap()

void Json::swap | ( | Value & | a,
|  | Value & | b )
| inline

Definition at line 949 of file value.h.

References swap(), and Json::Value::swap().

Referenced by swap().

Here is the caller graph for this function:

## ◆ toHex16Bit()

static String Json::toHex16Bit | ( | unsigned int | x | ) |
| static

Definition at line 257 of file json_writer.cpp.

References hex2.

Referenced by appendHex().

Here is the caller graph for this function:

## ◆ uintToString()

static void Json::uintToString | ( | LargestUInt | value,
|  | char *& | current )
| inline static

Converts an unsigned integer to string.

Parameters

  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().

Here is the caller graph for this function:

## ◆ utf8ToCodepoint()

static unsigned int Json::utf8ToCodepoint | ( | const char *& | s,
|  | const char * | e )
| static

Definition at line 189 of file json_writer.cpp.

Referenced by valueToQuotedStringN().

Here is the caller graph for this function:

## ◆ valueToQuotedString() [1/2]

String Json::valueToQuotedString | ( | const char * | value | ) |

Definition at line 353 of file json_writer.cpp.

References valueToQuotedStringN().

## ◆ valueToQuotedString() [2/2]

String Json::valueToQuotedString | ( | const char * | value,
|  | size_t | length )

Definition at line 357 of file json_writer.cpp.

References valueToQuotedStringN().

## ◆ valueToQuotedStringN()

static String Json::valueToQuotedStringN | ( | const char * | value,
|  | size_t | length,
|  | bool | emitUTF8 = false )
| static

Definition at line 276 of file json_writer.cpp.

References appendHex(), appendRaw(), doesAnyCharRequireEscaping(), and utf8ToCodepoint().

Referenced by valueToQuotedString(), and valueToQuotedString().

Here is the caller graph for this function:

## ◆ valueToString() [1/6]

String Json::valueToString | ( | bool | value | ) |

Definition at line 179 of file json_writer.cpp.

## ◆ valueToString() [2/6]

String Json::valueToString | ( | double | value,
|  | unsigned int | precision = Value::defaultRealPrecision,
|  | PrecisionType | precisionType = PrecisionType::significantDigits )

Definition at line 174 of file json_writer.cpp.

References valueToString().

## ◆ valueToString() [3/6]

String Json::valueToString | ( | Int | value | ) |

Definition at line 120 of file json_writer.cpp.

References valueToString().

Referenced by Json::Value::asString(), valueToString(), valueToString(), and valueToString().

Here is the caller graph for this function:

## ◆ valueToString() [4/6]

String Json::valueToString | ( | LargestInt | value | ) |

Definition at line 94 of file json_writer.cpp.

References Json::Value::maxLargestInt, Json::Value::minLargestInt, and uintToString().

## ◆ valueToString() [5/6]

String Json::valueToString | ( | LargestUInt | value | ) |

Definition at line 110 of file json_writer.cpp.

References uintToString().

## ◆ valueToString() [6/6]

String Json::valueToString | ( | UInt | value | ) |

Definition at line 122 of file json_writer.cpp.

References valueToString().

## ◆ writeString()

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 1250 of file json_writer.cpp.

References Json::StreamWriter::Factory::newStreamWriter(), and Json::StreamWriter::write().

Referenced by Json::Value::toStyledString().

Here is the caller graph for this function:

## Variable Documentation

## ◆ hex2

const char Json::hex2[]
| static

Initial value:
= "000102030405060708090a0b0c0d0e0f"
"101112131415161718191a1b1c1d1e1f"
"202122232425262728292a2b2c2d2e2f"
"303132333435363738393a3b3c3d3e3f"
"404142434445464748494a4b4c4d4e4f"
"505152535455565758595a5b5c5d5e5f"
"606162636465666768696a6b6c6d6e6f"
"707172737475767778797a7b7c7d7e7f"
"808182838485868788898a8b8c8d8e8f"
"909192939495969798999a9b9c9d9e9f"
"a0a1a2a3a4a5a6a7a8a9aaabacadaeaf"
"b0b1b2b3b4b5b6b7b8b9babbbcbdbebf"
"c0c1c2c3c4c5c6c7c8c9cacbcccdcecf"
"d0d1d2d3d4d5d6d7d8d9dadbdcdddedf"
"e0e1e2e3e4e5e6e7e8e9eaebecedeeef"
"f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"

Definition at line 240 of file json_writer.cpp.

Referenced by toHex16Bit().