JsonCpp 1.10.0
JSON data format manipulation library
Loading...
Searching...
No Matches
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...
struct  ConstMemberProxy
 Proxy struct to enable range-based for loops over const object members. 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...
struct  MemberProxy
 Proxy struct to enable range-based for loops over object members. 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  ValueConstMembersIterator
 Iterator adapter for range-based for loops. More...
class  ValueConstMembersView
 Range-based for loop adapter for object members. More...
class  ValueIterator
 Iterator for object and array value. More...
class  ValueIteratorBase
 base class for Value iterators. More...
class  ValueMembersIterator
 Iterator adapter for range-based for loops. More...
class  ValueMembersView
 Range-based for loop adapter for object members. More...
class  Writer
 Abstract class for writers. More...

Typedefs

using Int = int
using UInt = unsigned int
using Int64 = int64_t
using UInt64 = uint64_t
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::unique_ptr<CharReader>
using UIntToStringBuffer = char[uintToStringBufferSize]
using StreamWriterPtr = std::unique_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 > &)
const char * version ()
bool parseFromStream (CharReader::Factory const &, IStream &, Value *root, String *errs)
 Consume entire stream and use its begin/end.
IStreamoperator>> (IStream &, Value &)
 Read from 'sin' into 'root'.
void throwRuntimeError (String const &msg)
 used internally
void throwLogicError (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)
OStreamoperator<< (OStream &, const Value &root)
 Output using the StyledStreamWriter.
size_t & newlineScanByteCountForTesting ()
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 const char * valueTypeToString (ValueType type)
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 132 of file config.h.

◆ ArrayIndex

using Json::ArrayIndex = unsigned int

Definition at line 32 of file forwards.h.

◆ CharReaderPtr

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

Definition at line 50 of file json_reader.cpp.

◆ Int

using Json::Int = int

Definition at line 109 of file config.h.

◆ Int64

using Json::Int64 = int64_t

Definition at line 121 of file config.h.

◆ IStream

using Json::IStream = std::istream

Definition at line 142 of file config.h.

◆ IStringStream

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

Definition at line 136 of file config.h.

◆ LargestInt

Definition at line 124 of file config.h.

◆ LargestUInt

Definition at line 125 of file config.h.

◆ OStream

using Json::OStream = std::ostream

Definition at line 143 of file config.h.

◆ OStringStream

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

Definition at line 139 of file config.h.

◆ StreamWriterPtr

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

Definition at line 29 of file json_writer.cpp.

◆ String

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

Definition at line 135 of file config.h.

◆ UInt

using Json::UInt = unsigned int

Definition at line 110 of file config.h.

◆ UInt64

using Json::UInt64 = uint64_t

Definition at line 122 of file config.h.

◆ UIntToStringBuffer

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

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

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

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

Function Documentation

◆ appendHex()

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

Definition at line 209 of file json_writer.cpp.

References appendHex(), and toHex16Bit().

Referenced by appendHex(), and valueToQuotedStringN().

◆ appendRaw()

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

Definition at line 205 of file json_writer.cpp.

References appendRaw().

Referenced by appendRaw(), and valueToQuotedStringN().

◆ cloneUnique()

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

Definition at line 52 of file json_value.cpp.

References cloneUnique().

Referenced by cloneUnique().

◆ codePointToUTF8()

String Json::codePointToUTF8 ( unsigned int cp)
inlinestatic

Converts a unicode code-point to UTF-8.

Definition at line 39 of file json_tool.h.

References codePointToUTF8().

Referenced by codePointToUTF8().

◆ decodePrefixedString()

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

◆ doesAnyCharRequireEscaping()

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

Definition at line 118 of file json_writer.cpp.

References doesAnyCharRequireEscaping().

Referenced by doesAnyCharRequireEscaping(), and valueToQuotedStringN().

◆ duplicateAndPrefixStringValue()

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

◆ duplicateStringValue()

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

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

Referenced by duplicateStringValue().

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

References fixNumericLocale().

Referenced by fixNumericLocale().

◆ fixNumericLocaleInput()

template<typename Iter>
void Json::fixNumericLocaleInput ( Iter begin,
Iter end )

Definition at line 103 of file json_tool.h.

References fixNumericLocaleInput(), and getDecimalPoint().

Referenced by fixNumericLocaleInput().

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

References fixZerosInTheEnd().

Referenced by fixZerosInTheEnd().

◆ getDecimalPoint()

char Json::getDecimalPoint ( )
inlinestatic

Definition at line 29 of file json_tool.h.

References getDecimalPoint().

Referenced by fixNumericLocaleInput(), and getDecimalPoint().

◆ InRange()

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

◆ IsIntegral()

bool Json::IsIntegral ( double d)
static

◆ newlineScanByteCountForTesting()

size_t & Json::newlineScanByteCountForTesting ( )

Definition at line 991 of file json_reader.cpp.

References newlineScanByteCountForTesting().

Referenced by newlineScanByteCountForTesting().

◆ operator!=()

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

Definition at line 91 of file allocator.h.

References operator!=().

Referenced by operator!=().

◆ operator<<()

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

◆ operator==()

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

Definition at line 86 of file allocator.h.

References operator==().

Referenced by operator==().

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

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

Result:

* {
* "dir": {
*    "file": {
*    // The input stream JSON would be nested here.
*    }
* }
* }
* 
Exceptions
std::exceptionon parse error.
See also
Json::operator<<()

Definition at line 2061 of file json_reader.cpp.

References operator>>(), parseFromStream(), and throwRuntimeError().

Referenced by operator>>().

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

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

Referenced by operator>>(), and parseFromStream().

◆ releasePrefixedStringValue()

void Json::releasePrefixedStringValue ( char * value)
inlinestatic

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

Definition at line 184 of file json_value.cpp.

References releasePrefixedStringValue().

Referenced by releasePrefixedStringValue().

◆ releaseStringValue()

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

Definition at line 185 of file json_value.cpp.

References releaseStringValue().

Referenced by releaseStringValue().

◆ swap()

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

Definition at line 1175 of file value.h.

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

Referenced by swap().

◆ throwLogicError()

void Json::throwLogicError ( String const & msg)

used internally

Definition at line 239 of file json_value.cpp.

References Json::LogicError::LogicError(), and throwLogicError().

Referenced by throwLogicError().

◆ throwRuntimeError()

◆ toHex16Bit()

String Json::toHex16Bit ( unsigned int x)
static

Definition at line 194 of file json_writer.cpp.

References hex2, and toHex16Bit().

Referenced by appendHex(), and toHex16Bit().

◆ uintToString()

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

References uintToString().

Referenced by uintToString(), valueToString(), and valueToString().

◆ utf8ToCodepoint()

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

Definition at line 126 of file json_writer.cpp.

References utf8ToCodepoint().

Referenced by utf8ToCodepoint(), and valueToQuotedStringN().

◆ valueToQuotedString() [1/2]

String Json::valueToQuotedString ( const char * value)

Definition at line 290 of file json_writer.cpp.

References valueToQuotedString(), and valueToQuotedStringN().

Referenced by valueToQuotedString(), and valueToQuotedString().

◆ valueToQuotedString() [2/2]

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

Definition at line 294 of file json_writer.cpp.

References valueToQuotedString(), and valueToQuotedStringN().

◆ valueToQuotedStringN()

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

◆ valueToString() [1/6]

String Json::valueToString ( bool value)

Definition at line 116 of file json_writer.cpp.

References valueToString().

◆ valueToString() [2/6]

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

Definition at line 111 of file json_writer.cpp.

References valueToString().

◆ valueToString() [3/6]

String Json::valueToString ( Int value)

◆ valueToString() [4/6]

String Json::valueToString ( LargestInt value)

◆ valueToString() [5/6]

String Json::valueToString ( LargestUInt value)

Definition at line 47 of file json_writer.cpp.

References uintToString(), and valueToString().

◆ valueToString() [6/6]

String Json::valueToString ( UInt value)

Definition at line 59 of file json_writer.cpp.

References valueToString().

◆ valueTypeToString()

const char * Json::valueTypeToString ( ValueType type)
static

◆ version()

const char * Json::version ( )

Definition at line 1755 of file json_value.cpp.

References JSONCPP_VERSION_STRING, and version().

Referenced by version().

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

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

Referenced by Json::Value::toStyledString(), and writeString().

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

Referenced by toHex16Bit().