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

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< StreamWriterStreamWriterPtr
 

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 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 isAnyCharRequiredQuoting (char const *s, size_t n)
 
static unsigned int utf8ToCodepoint (const char *&s, const char *e)
 
static std::string toHex16Bit (unsigned int x)
 
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
 
static const char hex2 []
 

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

Definition at line 168 of file config.h.

◆ 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 71 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 64 of file json_tool.h.

◆ 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

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.

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

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

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, and Json::Value::maxInt.

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

References Json::Value::maxInt.

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

◆ fixNumericLocaleInput()

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

Definition at line 100 of file json_tool.h.

References getDecimalPoint().

◆ 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 1175 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,
min,
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:

◆ isAnyCharRequiredQuoting()

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

Definition at line 161 of file json_writer.cpp.

Referenced by valueToQuotedStringN().

+ Here is the caller graph for this function:

◆ IsIntegral()

static bool Json::IsIntegral ( double  d)
static

Definition at line 1297 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 1226 of file json_writer.cpp.

References Json::StreamWriterBuilder::newStreamWriter().

◆ operator==()

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

Definition at line 85 of file allocator.h.

◆ 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:

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

◆ toHex16Bit()

static std::string Json::toHex16Bit ( unsigned int  x)
static

Definition at line 242 of file json_writer.cpp.

References hex2, and JSONCPP_STRING.

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
valueUnsigned integer to convert to string
currentInput/Output string buffer. Must have at least uintToStringBufferSize chars free.

Definition at line 78 of file json_tool.h.

Referenced by 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 173 of file json_writer.cpp.

Referenced by valueToQuotedStringN().

+ Here is the caller graph for this function:

◆ valueToQuotedString()

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

Definition at line 325 of file json_writer.cpp.

References valueToQuotedStringN().

◆ valueToQuotedStringN()

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

Definition at line 253 of file json_writer.cpp.

References isAnyCharRequiredQuoting(), JSONCPP_STRING, toHex16Bit(), and utf8ToCodepoint().

Referenced by valueToQuotedString().

+ Here is the caller graph for this function:

◆ valueToString() [1/6]

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

Definition at line 110 of file json_writer.cpp.

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

+ Here is the caller graph for this function:

◆ valueToString() [2/6]

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

Definition at line 114 of file json_writer.cpp.

References valueToString().

◆ valueToString() [3/6]

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

◆ valueToString() [4/6]

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

Definition at line 100 of file json_writer.cpp.

References uintToString().

◆ valueToString() [5/6]

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

Definition at line 157 of file json_writer.cpp.

References valueToString().

◆ valueToString() [6/6]

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

Definition at line 159 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 1219 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

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

Referenced by toHex16Bit().

◆ maxUInt64AsDouble

const double Json::maxUInt64AsDouble = 18446744073709551615.0
static

Definition at line 61 of file json_value.cpp.

Referenced by Json::Value::isIntegral(), and Json::Value::isUInt64().