JSON Parser

template <typename _Handler>
class json_parser : public orcus::json::parser_base

Low-level JSON parser. The caller must provide a handler class to receive callbacks.

Public Types

typedef _Handler handler_type

Public Functions

json_parser(const char *p, size_t n, handler_type &hdl)

Constructor.

Parameters
  • p: pointer to a string stream containing JSON string.
  • n: size of the stream.
  • hdl: handler class instance.

void parse()

Call this method to start parsing.

Parser Handler

class json_parser_handler

Public Functions

void begin_parse()

Called when the parsing begins.

void end_parse()

Called when the parsing ends.

void begin_array()

Called when the opening brace of an array is encountered.

void end_array()

Called when the closing brace of an array is encountered.

void begin_object()

Called when the opening curly brace of an object is encountered.

void object_key(const char *p, size_t len, bool transient)

Called when a key value string of an object is encountered.

Parameters
  • p: pointer to the first character of the key value string.
  • len: length of the key value string.
  • transient: true if the string value is stored in a temporary buffer which is not guaranteed to hold the string value after the end of this callback. When false, the pointer points to somewhere in the JSON stream being parsed.

void end_object()

Called when the closing curly brace of an object is encountered.

void boolean_true()

Called when a boolean ‘true’ keyword is encountered.

void boolean_false()

Called when a boolean ‘false’ keyword is encountered.

void null()

Called when a ‘null’ keyword is encountered.

void string(const char *p, size_t len, bool transient)

Called when a string value is encountered.

Parameters
  • p: pointer to the first character of the string value.
  • len: length of the string value.
  • transient: true if the string value is stored in a temporary buffer which is not guaranteed to hold the string value after the end of this callback. When false, the pointer points to somewhere in the JSON stream being parsed.

void number(double val)

Called when a numeric value is encountered.

Parameters
  • val: numeric value.