JsonCpp - JSON data format manipulation library

JsonCpp project page | 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
typedef int | Int
typedef unsigned int | UInt
typedef __int64 | Int64
typedef unsigned __int64 | UInt64
typedef Int64 | LargestInt
typedef UInt64 | LargestUInt
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 }
| used internally More...
enum | CommentPlacement { commentBefore = 0, commentAfterOnSameLine, commentAfter, numberOfCommentPlacement }
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 &, std::istream &, Value *root, std::string *errs)
| Consume entire stream and use its begin/end. More...
std::istream & | operator>> (std::istream &, Value &)
| Read from 'sin' into 'root'. More...
std::string | writeString (StreamWriter::Factory const &factory, Value const &root)
| Write into stringstream, then return string, for convenience. More...
std::string | valueToString (Int value)
std::string | valueToString (UInt value)
std::string | valueToString (LargestInt value)
std::string | valueToString (LargestUInt value)
std::string | valueToString (double value)
std::string | valueToString (bool value)
std::string | valueToQuotedString (const char *value)
std::ostream & | operator<< (std::ostream &, const Value &root)
| Output using the StyledStreamWriter. More...
static void | getValidReaderKeys (std::set< std::string > *valid_keys)
static char | getDecimalPoint ()
static JSONCPP_STRING | codePointToUTF8 (unsigned int cp)
| Converts a unicode code-point to UTF-8. More...
static bool | isControlCharacter (char ch)
| Returns true if ch is a control character (in range [1,31]). More...
static void | uintToString (LargestUInt value, char *&current)
| Converts an unsigned integer to string. More...
static void | fixNumericLocale (char *begin, char *end)
| Change ',' to '. More...
static void | fixNumericLocaleInput (char *begin, char *end)
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)
| __declspec (noreturn) void throwRuntimeError(std
static bool | IsIntegral (double d)
static bool | containsControlCharacter (const char *str)
static bool | containsControlCharacter0 (const char *str, unsigned len)
static char const * | strnpbrk (char const *s, char const *accept, size_t n)
static std::string | valueToQuotedStringN (const char *value, unsigned length)
static void | getValidWriterKeys (std::set< std::string > *valid_keys)

## Variables
static const double | maxUInt64AsDouble = 18446744073709551615.0

## Detailed Description

JSON (JavaScript Object Notation).

## Typedef Documentation

## ◆ ArrayIndex

typedef unsigned int Json::ArrayIndex

Definition at line 23 of file forwards.h.

## ◆ CharReaderPtr

typedef std::auto_ptr<CharReader> Json::CharReaderPtr

Definition at line 60 of file json_reader.cpp.

## ◆ Int

typedef int Json::Int

Definition at line 153 of file config.h.

## ◆ Int64

typedef __int64 Json::Int64

Definition at line 162 of file config.h.

## ◆ LargestInt

typedef Int64 Json::LargestInt

Definition at line 168 of file config.h.

## ◆ LargestUInt

typedef UInt64 Json::LargestUInt

Definition at line 169 of file config.h.

## ◆ StreamWriterPtr

typedef std::auto_ptr<StreamWriter> Json::StreamWriterPtr

Definition at line 81 of file json_writer.cpp.

## ◆ UInt

typedef unsigned int Json::UInt

Definition at line 154 of file config.h.

## ◆ UInt64

typedef unsigned __int64 Json::UInt64

Definition at line 163 of file config.h.

## ◆ UIntToStringBuffer

typedef char Json::UIntToStringBuffer[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 104 of file value.h.

## ◆ ValueType

enum Json::ValueType

used internally

used internally 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 93 of file value.h.

## Function Documentation

## ◆ __declspec()

Json::__declspec | ( | noreturn |  | ) |

Definition at line 208 of file json_value.cpp.

References duplicateStringValue(), JSON_ASSERT, JSON_ASSERT_MESSAGE, JSONCPP_NORETURN, JSONCPP_STRING, Json::LogicError::LogicError(), operator==(), and releaseStringValue().

## ◆ codePointToUTF8()

static JSONCPP_STRING Json::codePointToUTF8 | ( | unsigned int | cp | ) |
| inlinestatic

Converts a unicode code-point to UTF-8.

Definition at line 36 of file json_tool.h.

References JSONCPP_STRING.

Referenced by Json::Reader::good(), and Json::Reader::parse().

Here is the caller graph for this function:

## ◆ containsControlCharacter()

static bool Json::containsControlCharacter | ( | const char * | str | ) |
| static

Definition at line 84 of file json_writer.cpp.

References isControlCharacter().

Referenced by valueToQuotedString().

Here is the caller graph for this function:

## ◆ containsControlCharacter0()

static bool Json::containsControlCharacter0 | ( | const char * | str,
|  | unsigned | len
| ) |  |
| static

Definition at line 92 of file json_writer.cpp.

References isControlCharacter().

Referenced by valueToQuotedStringN().

Here is the caller graph for this function:

## ◆ decodePrefixedString()

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

Definition at line 139 of file json_value.cpp.

References releasePrefixedStringValue(), releaseStringValue(), and Json::Value::size().

Referenced by Json::Value::asCString(), Json::Value::asString(), Json::Value::getString(), Json::Value::operator<(), Json::Value::operator==(), and Json::Value::Value().

Here is the caller graph for this function:

## ◆ duplicateAndPrefixStringValue()

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

Definition at line 118 of file json_value.cpp.

References JSON_ASSERT_MESSAGE.

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

Here is the caller graph for this function:

## ◆ duplicateStringValue()

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

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 97 of file json_value.cpp.

Referenced by __declspec().

Here is the caller graph for this function:

## ◆ fixNumericLocale()

static void Json::fixNumericLocale | ( | char * | begin,
|  | char * | end
| ) |  |
| inlinestatic

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.

Referenced by valueToString().

Here is the caller graph for this function:

## ◆ fixNumericLocaleInput()

static void Json::fixNumericLocaleInput | ( | char * | begin,
|  | char * | end
| ) |  |
| inlinestatic

Definition at line 103 of file json_tool.h.

References getDecimalPoint().

Referenced by Json::Reader::good().

Here is the caller graph for this function:

## ◆ getDecimalPoint()

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

Definition at line 26 of file json_tool.h.

Referenced by fixNumericLocaleInput().

Here is the caller graph for this function:

## ◆ getValidReaderKeys()

static void Json::getValidReaderKeys | ( | std::set< std::string > * | valid_keys | ) |
| static

Definition at line 1966 of file json_reader.cpp.

Referenced by Json::CharReaderBuilder::validate().

Here is the caller graph for this function:

## ◆ getValidWriterKeys()

static void Json::getValidWriterKeys | ( | std::set< std::string > * | valid_keys | ) |
| static

Definition at line 1165 of file json_writer.cpp.

Referenced by Json::StreamWriterBuilder::validate().

Here is the caller graph for this function:

## ◆ InRange()

template<typename T , typename U >

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

Definition at line 69 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:

## ◆ isControlCharacter()

static bool Json::isControlCharacter | ( | char | ch | ) |
| inlinestatic

Returns true if ch is a control character (in range [1,31]).

Definition at line 65 of file json_tool.h.

Referenced by containsControlCharacter(), containsControlCharacter0(), valueToQuotedString(), and valueToQuotedStringN().

Here is the caller graph for this function:

## ◆ IsIntegral()

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

Definition at line 1298 of file json_value.cpp.

Referenced by Json::Value::isInt(), Json::Value::isInt64(), 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 90 of file allocator.h.

## ◆ operator<<()

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

Output using the StyledStreamWriter.

See also
  Json::operator>>()

Definition at line 1216 of file json_writer.cpp.

References Json::StreamWriterBuilder::newStreamWriter().

Referenced by Json::StyledStreamWriter::~StyledStreamWriter().

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 85 of file allocator.h.

Referenced by __declspec().

Here is the caller graph for this function:

## ◆ operator>>()

std::istream & Json::operator>> | ( | std::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;

Result:

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

Exceptions

  std::exception | on parse error.

See also
  Json::operator<<()

Definition at line 2050 of file json_reader.cpp.

References JSONCPP_STRING, and parseFromStream().

## ◆ parseFromStream()

bool Json::parseFromStream | ( | CharReader::Factory const & | fact,
|  | std::istream & | sin,
|  | 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.

Definition at line 2036 of file json_reader.cpp.

References JSONCPP_OSTRINGSTREAM, JSONCPP_STRING, and Json::CharReader::Factory::newCharReader().

Referenced by operator>>().

Here is the caller graph for this function:

## ◆ releasePrefixedStringValue()

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

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

Definition at line 169 of file json_value.cpp.

Referenced by decodePrefixedString(), and Json::Value::~Value().

Here is the caller graph for this function:

## ◆ releaseStringValue()

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

Definition at line 172 of file json_value.cpp.

Referenced by __declspec(), and decodePrefixedString().

Here is the caller graph for this function:

## ◆ strnpbrk()

static char const* Json::strnpbrk | ( | char const * | s,
|  | char const * | accept,
|  | size_t | n
| ) |  |
| static

Definition at line 242 of file json_writer.cpp.

Referenced by valueToQuotedStringN().

Here is the caller graph for this function:

## ◆ uintToString()

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

Converts an unsigned integer to string.

Parameters

  value | Unsigned interger 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().

Here is the caller graph for this function:

## ◆ valueToQuotedString()

std::string Json::valueToQuotedString | ( | const char * | value | ) |

Definition at line 179 of file json_writer.cpp.

References containsControlCharacter(), isControlCharacter(), JSONCPP_OSTRINGSTREAM, and JSONCPP_STRING.

Referenced by Json::StyledWriter::write(), Json::StyledStreamWriter::write(), and Json::StyledStreamWriter::~StyledStreamWriter().

Here is the caller graph for this function:

## ◆ valueToQuotedStringN()

static std::string Json::valueToQuotedStringN | ( | const char * | value,
|  | unsigned | length
| ) |  |
| static

Definition at line 256 of file json_writer.cpp.

References containsControlCharacter0(), isControlCharacter(), JSONCPP_OSTRINGSTREAM, JSONCPP_STRING, and strnpbrk().

Referenced by Json::FastWriter::write(), Json::StyledWriter::write(), and Json::StyledStreamWriter::write().

Here is the caller graph for this function:

## ◆ valueToString() [1/6]

std::string Json::valueToString | ( | Int | value | ) |

Definition at line 128 of file json_writer.cpp.

Referenced by Json::Value::asString(), valueToString(), Json::FastWriter::write(), Json::StyledWriter::write(), Json::StyledStreamWriter::write(), and Json::StyledStreamWriter::~StyledStreamWriter().

Here is the caller graph for this function:

## ◆ valueToString() [2/6]

std::string Json::valueToString | ( | UInt | value | ) |

Definition at line 132 of file json_writer.cpp.

References fixNumericLocale(), isfinite, JSONCPP_STRING, snprintf, and valueToString().

## ◆ valueToString() [3/6]

std::string Json::valueToString | ( | LargestInt | value | ) |

Definition at line 102 of file json_writer.cpp.

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

## ◆ valueToString() [4/6]

std::string Json::valueToString | ( | LargestUInt | value | ) |

Definition at line 118 of file json_writer.cpp.

References uintToString().

## ◆ valueToString() [5/6]

std::string Json::valueToString | ( | double | value | ) |

Definition at line 175 of file json_writer.cpp.

References valueToString().

## ◆ valueToString() [6/6]

std::string Json::valueToString | ( | bool | value | ) |

Definition at line 177 of file json_writer.cpp.

## ◆ writeString()

std::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 1209 of file json_writer.cpp.

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

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

Here is the caller graph for this function:

## Variable Documentation

## ◆ maxUInt64AsDouble

const double Json::maxUInt64AsDouble = 18446744073709551615.0
| static

Definition at line 61 of file json_value.cpp.