CMS 3D CMS Logo

List of all members | Classes | Public Types | Public Member Functions | Public Attributes | Private Types | Private Member Functions | Private Attributes
Json::Reader Class Reference

Unserialize a JSON document into a Value. More...

#include <reader.h>

Classes

class  ErrorInfo
 
class  Token
 

Public Types

typedef char Char
 

Public Member Functions

std::string getFormatedErrorMessages () const
 Returns a user friendly string that list errors in the parsed document. More...
 
bool parse (const char *beginDoc, const char *endDoc, Value &root, bool collectComments=true)
 Read a Value from a JSON document. More...
 
bool parse (const std::string &document, Value &root, bool collectComments=true)
 Read a Value from a JSON document. More...
 
bool parse (std::istream &is, Value &root, bool collectComments=true)
 Parse from input stream. More...
 
 Reader ()
 Constructs a Reader allowing all features for parsing. More...
 
 Reader (const Features &features)
 Constructs a Reader allowing the specified feature set for parsing. More...
 

Public Attributes

const typedef CharLocation
 

Private Types

typedef std::deque< ErrorInfoErrors
 
typedef std::stack< Value * > Nodes
 
enum  TokenType {
  tokenEndOfStream = 0, tokenObjectBegin, tokenObjectEnd, tokenArrayBegin,
  tokenArrayEnd, tokenString, tokenNumber, tokenTrue,
  tokenFalse, tokenNull, tokenArraySeparator, tokenMemberSeparator,
  tokenComment, tokenError
}
 

Private Member Functions

void addComment (Location begin, Location end, CommentPlacement placement)
 
bool addError (const std::string &message, Token &token, Location extra=nullptr)
 
bool addErrorAndRecover (const std::string &message, Token &token, TokenType skipUntilToken)
 
ValuecurrentValue ()
 
bool decodeDouble (Token &token)
 
bool decodeNumber (Token &token)
 
bool decodeString (Token &token)
 
bool decodeString (Token &token, std::string &decoded)
 
bool decodeUnicodeCodePoint (Token &token, Location &current, Location end, unsigned int &unicode)
 
bool decodeUnicodeEscapeSequence (Token &token, Location &current, Location end, unsigned int &unicode)
 
bool expectToken (TokenType type, Token &token, const char *message)
 
std::string getLocationLineAndColumn (Location location) const
 
void getLocationLineAndColumn (Location location, int &line, int &column) const
 
Char getNextChar ()
 
bool match (Location pattern, int patternLength)
 
bool readArray (Token &token)
 
bool readComment ()
 
bool readCppStyleComment ()
 
bool readCStyleComment ()
 
void readNumber ()
 
bool readObject (Token &token)
 
bool readString ()
 
bool readToken (Token &token)
 
bool readValue ()
 
bool recoverFromError (TokenType skipUntilToken)
 
void skipCommentTokens (Token &token)
 
void skipSpaces ()
 
void skipUntilSpace ()
 

Private Attributes

Location begin_
 
bool collectComments_
 
std::string commentsBefore_
 
Location current_
 
std::string document_
 
Location end_
 
Errors errors_
 
Features features_
 
ValuelastValue_
 
Location lastValueEnd_
 
Nodes nodes_
 

Detailed Description

Unserialize a JSON document into a Value.

Definition at line 16 of file reader.h.

Member Typedef Documentation

◆ Char

typedef char Json::Reader::Char

Definition at line 18 of file reader.h.

◆ Errors

typedef std::deque<ErrorInfo> Json::Reader::Errors
private

Definition at line 98 of file reader.h.

◆ Nodes

typedef std::stack<Value *> Json::Reader::Nodes
private

Definition at line 129 of file reader.h.

Member Enumeration Documentation

◆ TokenType

Enumerator
tokenEndOfStream 
tokenObjectBegin 
tokenObjectEnd 
tokenArrayBegin 
tokenArrayEnd 
tokenString 
tokenNumber 
tokenTrue 
tokenFalse 
tokenNull 
tokenArraySeparator 
tokenMemberSeparator 
tokenComment 
tokenError 

Definition at line 67 of file reader.h.

Constructor & Destructor Documentation

◆ Reader() [1/2]

Json::Reader::Reader ( )

Constructs a Reader allowing all features for parsing.

◆ Reader() [2/2]

Json::Reader::Reader ( const Features features)

Constructs a Reader allowing the specified feature set for parsing.

Member Function Documentation

◆ addComment()

void Json::Reader::addComment ( Location  begin,
Location  end,
CommentPlacement  placement 
)
private

◆ addError()

bool Json::Reader::addError ( const std::string &  message,
Token token,
Location  extra = nullptr 
)
private

◆ addErrorAndRecover()

bool Json::Reader::addErrorAndRecover ( const std::string &  message,
Token token,
TokenType  skipUntilToken 
)
private

◆ currentValue()

Value& Json::Reader::currentValue ( )
private

◆ decodeDouble()

bool Json::Reader::decodeDouble ( Token token)
private

◆ decodeNumber()

bool Json::Reader::decodeNumber ( Token token)
private

◆ decodeString() [1/2]

bool Json::Reader::decodeString ( Token token)
private

◆ decodeString() [2/2]

bool Json::Reader::decodeString ( Token token,
std::string &  decoded 
)
private

◆ decodeUnicodeCodePoint()

bool Json::Reader::decodeUnicodeCodePoint ( Token token,
Location current,
Location  end,
unsigned int &  unicode 
)
private

◆ decodeUnicodeEscapeSequence()

bool Json::Reader::decodeUnicodeEscapeSequence ( Token token,
Location current,
Location  end,
unsigned int &  unicode 
)
private

◆ expectToken()

bool Json::Reader::expectToken ( TokenType  type,
Token token,
const char *  message 
)
private

◆ getFormatedErrorMessages()

std::string Json::Reader::getFormatedErrorMessages ( ) const

Returns a user friendly string that list errors in the parsed document.

Returns
Formatted error message with the list of errors with their location in the parsed document. An empty string is returned if no error occurred during parsing.

◆ getLocationLineAndColumn() [1/2]

std::string Json::Reader::getLocationLineAndColumn ( Location  location) const
private

◆ getLocationLineAndColumn() [2/2]

void Json::Reader::getLocationLineAndColumn ( Location  location,
int &  line,
int &  column 
) const
private

◆ getNextChar()

Char Json::Reader::getNextChar ( )
private

◆ match()

bool Json::Reader::match ( Location  pattern,
int  patternLength 
)
private

◆ parse() [1/3]

bool Json::Reader::parse ( const char *  beginDoc,
const char *  endDoc,
Value root,
bool  collectComments = true 
)

Read a Value from a JSON document.

Parameters
documentUTF-8 encoded string containing the document to read.
root[out] Contains the root value of the document if it was successfully parsed.
collectCommentstrue to collect comment and allow writing them back during serialization, false to discard comments. This parameter is ignored if Features::allowComments_ is false.
Returns
true if the document was successfully parsed, false if an error occurred.

◆ parse() [2/3]

bool Json::Reader::parse ( const std::string &  document,
Value root,
bool  collectComments = true 
)

Read a Value from a JSON document.

Parameters
documentUTF-8 encoded string containing the document to read.
root[out] Contains the root value of the document if it was successfully parsed.
collectCommentstrue to collect comment and allow writing them back during serialization, false to discard comments. This parameter is ignored if Features::allowComments_ is false.
Returns
true if the document was successfully parsed, false if an error occurred.

◆ parse() [3/3]

bool Json::Reader::parse ( std::istream &  is,
Value root,
bool  collectComments = true 
)

Parse from input stream.

See also
Json::operator>>(std::istream&, Json::Value&).

◆ readArray()

bool Json::Reader::readArray ( Token token)
private

◆ readComment()

bool Json::Reader::readComment ( )
private

◆ readCppStyleComment()

bool Json::Reader::readCppStyleComment ( )
private

◆ readCStyleComment()

bool Json::Reader::readCStyleComment ( )
private

◆ readNumber()

void Json::Reader::readNumber ( )
private

◆ readObject()

bool Json::Reader::readObject ( Token token)
private

◆ readString()

bool Json::Reader::readString ( )
private

◆ readToken()

bool Json::Reader::readToken ( Token token)
private

◆ readValue()

bool Json::Reader::readValue ( )
private

◆ recoverFromError()

bool Json::Reader::recoverFromError ( TokenType  skipUntilToken)
private

◆ skipCommentTokens()

void Json::Reader::skipCommentTokens ( Token token)
private

◆ skipSpaces()

void Json::Reader::skipSpaces ( )
private

◆ skipUntilSpace()

void Json::Reader::skipUntilSpace ( )
private

Member Data Documentation

◆ begin_

Location Json::Reader::begin_
private

Definition at line 133 of file reader.h.

◆ collectComments_

bool Json::Reader::collectComments_
private

Definition at line 140 of file reader.h.

◆ commentsBefore_

std::string Json::Reader::commentsBefore_
private

Definition at line 138 of file reader.h.

◆ current_

Location Json::Reader::current_
private

Definition at line 135 of file reader.h.

◆ document_

std::string Json::Reader::document_
private

Definition at line 132 of file reader.h.

◆ end_

Location Json::Reader::end_
private

Definition at line 134 of file reader.h.

◆ errors_

Errors Json::Reader::errors_
private

Definition at line 131 of file reader.h.

◆ features_

Features Json::Reader::features_
private

Definition at line 139 of file reader.h.

◆ lastValue_

Value* Json::Reader::lastValue_
private

Definition at line 137 of file reader.h.

◆ lastValueEnd_

Location Json::Reader::lastValueEnd_
private

Definition at line 136 of file reader.h.

◆ Location

const typedef Char* Json::Reader::Location

Definition at line 19 of file reader.h.

◆ nodes_

Nodes Json::Reader::nodes_
private

Definition at line 130 of file reader.h.

Json::Reader::tokenFalse
Definition: reader.h:76
Json::Reader::tokenComment
Definition: reader.h:80
Json::Reader::tokenTrue
Definition: reader.h:75
Json::Reader::tokenMemberSeparator
Definition: reader.h:79
Json::Reader::tokenObjectBegin
Definition: reader.h:69
Json::Reader::tokenEndOfStream
Definition: reader.h:68
Json::Reader::tokenNumber
Definition: reader.h:74
Json::Reader::tokenArrayBegin
Definition: reader.h:71
Json::Reader::tokenObjectEnd
Definition: reader.h:70
Json::Reader::tokenArrayEnd
Definition: reader.h:72
Json::Reader::tokenNull
Definition: reader.h:77
Json::Reader::tokenString
Definition: reader.h:73
Json::Reader::tokenError
Definition: reader.h:81
Json::Reader::tokenArraySeparator
Definition: reader.h:78