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

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

#include <reader.h>

Classes

struct  StructuredError
 An error tagged with where in the JSON text it was encountered. More...
 

Public Types

using Char = char
 
using Location = const Char *
 

Public Member Functions

 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...
 
bool parse (const std::string &document, Value &root, bool collectComments=true)
 Read a Value from a JSON 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 (IStream &is, Value &root, bool collectComments=true)
 Parse from input stream. More...
 
String getFormatedErrorMessages () const
 Returns a user friendly string that list errors in the parsed document. More...
 
String getFormattedErrorMessages () const
 Returns a user friendly string that list errors in the parsed document. More...
 
std::vector< StructuredErrorgetStructuredErrors () const
 Returns a vector of structured errors encountered while parsing. More...
 
bool pushError (const Value &value, const String &message)
 Add a semantic error message. More...
 
bool pushError (const Value &value, const String &message, const Value &extra)
 Add a semantic error message with extra context. More...
 
bool good () const
 Return whether there are any errors. More...
 

Private Types

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

Private Member Functions

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

Static Private Member Functions

static bool containsNewLine (Location begin, Location end)
 
static String normalizeEOL (Location begin, Location end)
 

Private Attributes

Nodes nodes_
 
Errors errors_
 
String document_
 
Location begin_ {}
 
Location end_ {}
 
Location current_ {}
 
Location lastValueEnd_ {}
 
ValuelastValue_ {}
 
String commentsBefore_
 
Features features_
 
bool collectComments_ {}
 

Detailed Description

Unserialize a JSON document into a Value.

Deprecated:
Use CharReader and CharReaderBuilder.

Constructor & Destructor Documentation

◆ Reader() [1/2]

Json::Reader::Reader ( )

Constructs a Reader allowing all features for parsing.

Deprecated:
Use CharReader and CharReaderBuilder.

◆ Reader() [2/2]

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

Constructs a Reader allowing the specified feature set for parsing.

Deprecated:
Use CharReader and CharReaderBuilder.

Member Function Documentation

◆ getFormatedErrorMessages()

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.
Deprecated:
Use getFormattedErrorMessages() instead (typo fix).

◆ getFormattedErrorMessages()

String Json::Reader::getFormattedErrorMessages ( ) 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.

◆ getStructuredErrors()

std::vector<StructuredError> Json::Reader::getStructuredErrors ( ) const

Returns a vector of structured errors encountered while parsing.

Returns
A (possibly empty) vector of StructuredError objects. Currently only one error can be returned, but the caller should tolerate multiple errors. This can occur if the parser recovers from a non-fatal parse error and then encounters additional errors.

◆ good()

bool Json::Reader::good ( ) const

Return whether there are any errors.

Returns
true if there are no errors to report false if errors have occurred.

◆ parse() [1/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.
[out]rootContains 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 char *  beginDoc,
const char *  endDoc,
Value root,
bool  collectComments = true 
)

Read a Value from a JSON document.

Parameters
beginDocPointer on the beginning of the UTF-8 encoded string of the document to read.
endDocPointer on the end of the UTF-8 encoded string of the document to read. Must be >= beginDoc.
[out]rootContains 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 ( IStream &  is,
Value root,
bool  collectComments = true 
)

Parse from input stream.

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

◆ pushError() [1/2]

bool Json::Reader::pushError ( const Value value,
const String &  message 
)

Add a semantic error message.

Parameters
valueJSON Value location associated with the error
messageThe error message.
Returns
true if the error was successfully added, false if the Value offset exceeds the document size.

◆ pushError() [2/2]

bool Json::Reader::pushError ( const Value value,
const String &  message,
const Value extra 
)

Add a semantic error message with extra context.

Parameters
valueJSON Value location associated with the error
messageThe error message.
extraAdditional JSON Value location to contextualize the error
Returns
true if the error was successfully added, false if either Value offset exceeds the document size.

The documentation for this class was generated from the following file: