JsonCpp project page JsonCpp home page

Classes | Typedefs | Enumerations | Functions | Variables

Json Namespace Reference

JSON (JavaScript Object Notation). More...

Classes

class  Features
 Configuration passed to reader and writer. More...
class  Reader
 Unserialize a JSON document into a Value. More...
class  CharReader
 Interface for reading JSON from a char array. More...
class  CharReaderBuilder
 Build a CharReader implementation. 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...
class  Writer
 Abstract class for writers. More...
class  FastWriter
 Outputs a Value in JSON format without formatting (not human friendly). More...
class  StyledWriter
 Writes a Value in JSON format in a human friendly way. More...
class  StyledStreamWriter
 Writes a Value in JSON format in a human friendly way, to a stream rather than to a string. 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< CharReaderCharReaderPtr
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  { uintToStringBufferSize = 3 * sizeof(LargestUInt) + 1 }

Functions

bool parseFromStream (CharReader::Factory const &, std::istream &, Value *root, std::string *errs)
 Consume entire stream and use its begin/end.
std::istream & operator>> (std::istream &, Value &)
 Read from 'sin' into 'root'.
void throwRuntimeError (std::string const &msg)
 used internally
void throwLogicError (std::string const &msg)
 used internally
std::string writeString (StreamWriter::Factory const &factory, Value const &root)
 Write into stringstream, then return string, for convenience.
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.
static bool containsNewLine (Reader::Location begin, Reader::Location end)
static std::string normalizeEOL (Reader::Location begin, Reader::Location end)
static void getValidReaderKeys (std::set< std::string > *valid_keys)
static std::string codePointToUTF8 (unsigned int cp)
 Converts a unicode code-point to UTF-8.
static bool isControlCharacter (char ch)
 Returns true if ch is a control character (in range [0,32[).
static void uintToString (LargestUInt value, char *&current)
 Converts an unsigned integer to string.
static void fixNumericLocale (char *begin, char *end)
 Change ',' to '.
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 releaseStringValue (char *value)
 Free the string duplicated by duplicateStringValue()/duplicateAndPrefixStringValue().
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 unsigned char kNull [sizeof(Value)] = { 0 }
const unsigned char & kNullRef = kNull[0]

Detailed Description

JSON (JavaScript Object Notation).


Typedef Documentation

typedef unsigned int Json::ArrayIndex

Definition at line 23 of file forwards.h.

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

Definition at line 38 of file json_reader.cpp.

typedef int Json::Int

Definition at line 88 of file config.h.

typedef __int64 Json::Int64

Definition at line 97 of file config.h.

Definition at line 103 of file config.h.

Definition at line 104 of file config.h.

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

Definition at line 46 of file json_writer.cpp.

typedef unsigned int Json::UInt

Definition at line 89 of file config.h.

typedef unsigned __int64 Json::UInt64

Definition at line 98 of file config.h.

typedef char Json::UIntToStringBuffer[uintToStringBufferSize]

Definition at line 56 of file json_tool.h.


Enumeration Type Documentation

anonymous enum
Enumerator:
uintToStringBufferSize 

Constant that specify the size of the buffer that must be passed to uintToString.

Definition at line 49 of file json_tool.h.

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 74 of file value.h.

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 63 of file value.h.


Function Documentation

static std::string Json::codePointToUTF8 ( unsigned int  cp) [inline, static]

Converts a unicode code-point to UTF-8.

Definition at line 18 of file json_tool.h.

static bool Json::containsControlCharacter ( const char *  str) [static]

Definition at line 49 of file json_writer.cpp.

References isControlCharacter().

Referenced by valueToQuotedString().

Here is the caller graph for this function:

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

Definition at line 57 of file json_writer.cpp.

References isControlCharacter().

Referenced by valueToQuotedStringN().

Here is the caller graph for this function:

static bool Json::containsNewLine ( Reader::Location  begin,
Reader::Location  end 
) [static]

Definition at line 62 of file json_reader.cpp.

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

Definition at line 123 of file json_value.cpp.

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

Here is the caller graph for this function:

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

Definition at line 102 of file json_value.cpp.

References JSON_ASSERT_MESSAGE, Json::Value::maxInt, and throwRuntimeError().

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

Here is the caller graph for this function:

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

Duplicates the specified string value.

Parameters:
valuePointer to the string to duplicate. Must be zero-terminated if length is "unknown".
lengthLength 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 82 of file json_value.cpp.

References Json::Value::maxInt, and throwRuntimeError().

static void Json::fixNumericLocale ( char *  begin,
char *  end 
) [inline, static]

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 76 of file json_tool.h.

Referenced by valueToString().

Here is the caller graph for this function:

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

Definition at line 1907 of file json_reader.cpp.

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

Here is the caller graph for this function:

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

Definition at line 1117 of file json_writer.cpp.

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

Here is the caller graph for this function:

template<typename T , typename U >
static bool Json::InRange ( double  d,
min,
max 
) [inline, static]

Definition at line 57 of file json_value.cpp.

Referenced by Json::Value::asInt(), Json::Value::asUInt(), and Json::Value::isConvertibleTo().

Here is the caller graph for this function:

static bool Json::isControlCharacter ( char  ch) [inline, static]

Returns true if ch is a control character (in range [0,32[).

Definition at line 47 of file json_tool.h.

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

Here is the caller graph for this function:

static bool Json::IsIntegral ( double  d) [static]

Definition at line 1214 of file json_value.cpp.

Referenced by Json::Value::isInt(), Json::Value::isInt64(), Json::Value::isUInt(), and Json::Value::isUInt64().

Here is the caller graph for this function:

static std::string Json::normalizeEOL ( Reader::Location  begin,
Reader::Location  end 
) [static]

Definition at line 354 of file json_reader.cpp.

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

Output using the StyledStreamWriter.

See also:
Json::operator>>()

Definition at line 1164 of file json_writer.cpp.

References Json::StreamWriterBuilder::newStreamWriter().

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::exceptionon parse error.
See also:
Json::operator<<()

Definition at line 1987 of file json_reader.cpp.

References parseFromStream(), and throwRuntimeError().

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 1973 of file json_reader.cpp.

References Json::CharReader::Factory::newCharReader().

Referenced by operator>>().

Here is the caller graph for this function:

static void Json::releaseStringValue ( char *  value) [inline, static]

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

Definition at line 137 of file json_value.cpp.

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

Here is the caller graph for this function:

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

Definition at line 202 of file json_writer.cpp.

Referenced by valueToQuotedStringN().

Here is the caller graph for this function:

void Json::throwLogicError ( std::string const &  msg)

used internally

Definition at line 192 of file json_value.cpp.

void Json::throwRuntimeError ( std::string const &  msg)

used internally

Definition at line 188 of file json_value.cpp.

Referenced by duplicateAndPrefixStringValue(), duplicateStringValue(), Json::StreamWriterBuilder::newStreamWriter(), and operator>>().

Here is the caller graph for this function:

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

Converts an unsigned integer to string.

Parameters:
valueUnsigned interger to convert to string
currentInput/Output string buffer. Must have at least uintToStringBufferSize chars free.

Definition at line 63 of file json_tool.h.

Referenced by valueToString().

Here is the caller graph for this function:

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

Definition at line 139 of file json_writer.cpp.

References containsControlCharacter(), and isControlCharacter().

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

Definition at line 216 of file json_writer.cpp.

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

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

Definition at line 100 of file json_writer.cpp.

References fixNumericLocale(), isfinite, and snprintf.

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

Definition at line 80 of file json_writer.cpp.

References uintToString().

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

Definition at line 67 of file json_writer.cpp.

References uintToString().

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

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

Here is the caller graph for this function:

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

Definition at line 137 of file json_writer.cpp.

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

References Json::StreamWriter::Factory::newStreamWriter().


Variable Documentation

const unsigned char Json::kNull[sizeof(Value)] = { 0 } [static]

Definition at line 34 of file json_value.cpp.

const unsigned char& Json::kNullRef = kNull[0]

Definition at line 35 of file json_value.cpp.