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  FastWriter
 Outputs a Value in JSON format without formatting (not human friendly). More...
 
class  Features
 Configuration passed to reader and writer. 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  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< 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. More...
 
std::istream & operator>> (std::istream &, Value &)
 Read from 'sin' into 'root'. More...
 
void throwRuntimeError (std::string const &msg)
 used internally More...
 
void throwLogicError (std::string const &msg)
 used internally 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 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. More...
 
static bool isControlCharacter (char ch)
 Returns true if ch is a control character (in range [0,32[). 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...
 
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 releaseStringValue (char *value)
 Free the string duplicated by duplicateStringValue()/duplicateAndPrefixStringValue(). More...
 
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]
 
static const double maxUInt64AsDouble = 18446744073709551615.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)
inlinestatic

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

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

Definition at line 57 of file json_writer.cpp.

References isControlCharacter().

Referenced by valueToQuotedStringN().

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 
)
inlinestatic
static char* Json::duplicateAndPrefixStringValue ( const char *  value,
unsigned int  length 
)
inlinestatic

Definition at line 102 of file json_value.cpp.

References JSON_ASSERT_MESSAGE, and throwRuntimeError().

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

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

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

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

Referenced by valueToString().

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

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

template<typename T , typename U >
static bool Json::InRange ( double  d,
min,
max 
)
inlinestatic
static bool Json::isControlCharacter ( char  ch)
inlinestatic

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

static bool Json::IsIntegral ( double  d)
static
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:

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

static void Json::releaseStringValue ( char *  value)
inlinestatic

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

Definition at line 137 of file json_value.cpp.

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

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

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

used internally

Definition at line 191 of file json_value.cpp.

void Json::throwRuntimeError ( std::string const &  msg)
static void Json::uintToString ( LargestUInt  value,
char *&  current 
)
inlinestatic

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

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 ( Int  value)

Definition at line 90 of file json_writer.cpp.

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

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

Definition at line 94 of file json_writer.cpp.

References valueToString().

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

Definition at line 67 of file json_writer.cpp.

References uintToString().

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

Definition at line 80 of file json_writer.cpp.

References uintToString().

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

Definition at line 100 of file json_writer.cpp.

References fixNumericLocale(), isfinite, and snprintf.

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.

const double Json::maxUInt64AsDouble = 18446744073709551615.0
static

Definition at line 49 of file json_value.cpp.