nlohmann::detail::json_sax_dom_parser< BasicJsonType > Class Template Reference

SAX implementation to create a JSON value from SAX events. More...

`#include <json.hpp>`

Collaboration diagram for nlohmann::detail::json_sax_dom_parser< BasicJsonType >:

## Public Types

using | number_integer_t = typename BasicJsonType::number_integer_t
using | number_unsigned_t = typename BasicJsonType::number_unsigned_t
using | number_float_t = typename BasicJsonType::number_float_t
using | string_t = typename BasicJsonType::string_t
using | binary_t = typename BasicJsonType::binary_t

## Public Member Functions

| json_sax_dom_parser (BasicJsonType &r, const bool allow_exceptions_=true)
| json_sax_dom_parser (const json_sax_dom_parser &)=delete
| json_sax_dom_parser (json_sax_dom_parser &&)=default
json_sax_dom_parser & | operator= (const json_sax_dom_parser &)=delete
json_sax_dom_parser & | operator= (json_sax_dom_parser &&)=default
| ~json_sax_dom_parser ()=default
bool | null ()
bool | boolean (bool val)
bool | number_integer (number_integer_t val)
bool | number_unsigned (number_unsigned_t val)
bool | number_float (number_float_t val, const string_t &)
bool | string (string_t &val)
bool | binary (binary_t &val)
bool | start_object (std::size_t len)
bool | key (string_t &val)
bool | end_object ()
bool | start_array (std::size_t len)
bool | end_array ()
template<class Exception >
bool | parse_error (std::size_t, const std::string &, const Exception &ex)
constexpr bool | is_errored () const

## Private Member Functions

template<typename Value >
JSON_HEDLEY_RETURNS_NON_NULL BasicJsonType * | handle_value (Value &&v)

## Private Attributes

BasicJsonType & | root
| the parsed JSON value More...
std::vector< BasicJsonType * > | ref_stack {}
| stack to model hierarchy of values More...
BasicJsonType * | object_element = nullptr
| helper to hold the reference for the next object element More...
bool | errored = false
| whether a syntax error occurred More...
const bool | allow_exceptions = true
| whether to throw exceptions in case of errors More...

## Detailed Description

### template<typename BasicJsonType>
class nlohmann::detail::json_sax_dom_parser< BasicJsonType >

SAX implementation to create a JSON value from SAX events.

This class implements the json_sax interface and processes the SAX events to create a JSON value which makes it basically a DOM parser. The structure or hierarchy of the JSON value is managed by the stack `ref_stack` which contains a pointer to the respective array or object for each recursion depth.

After successful parsing, the value that is passed by reference to the constructor contains the parsed value.

Template Parameters

  BasicJsonType | the JSON type

Definition at line 5861 of file json.hpp.

## Member Typedef Documentation

## binary_t

template<typename BasicJsonType>

using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::binary_t = typename BasicJsonType::binary_t

Definition at line 5868 of file json.hpp.

## number_float_t

template<typename BasicJsonType>

using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_float_t = typename BasicJsonType::number_float_t

Definition at line 5866 of file json.hpp.

## number_integer_t

template<typename BasicJsonType>

using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_integer_t = typename BasicJsonType::number_integer_t

Definition at line 5864 of file json.hpp.

## number_unsigned_t

template<typename BasicJsonType>

using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_unsigned_t = typename BasicJsonType::number_unsigned_t

Definition at line 5865 of file json.hpp.

## string_t

template<typename BasicJsonType>

using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::string_t = typename BasicJsonType::string_t

Definition at line 5867 of file json.hpp.

## Constructor & Destructor Documentation

## json_sax_dom_parser() [1/3]

template<typename BasicJsonType>

nlohmann::detail::json_sax_dom_parser< BasicJsonType >::json_sax_dom_parser | ( | BasicJsonType & | r,
|  | const bool | allow_exceptions_ = `true`
| ) |  |

inline explicit

Parameters

  [in,out] | r | reference to a JSON value that is manipulated while parsing
  [in] | allow_exceptions_ | whether parse errors yield exceptions

Definition at line 5875 of file json.hpp.

## json_sax_dom_parser() [2/3]

template<typename BasicJsonType>

nlohmann::detail::json_sax_dom_parser< BasicJsonType >::json_sax_dom_parser | ( | const json_sax_dom_parser< BasicJsonType > & |  | ) |

delete

## json_sax_dom_parser() [3/3]

template<typename BasicJsonType>

nlohmann::detail::json_sax_dom_parser< BasicJsonType >::json_sax_dom_parser | ( | json_sax_dom_parser< BasicJsonType > && |  | ) |

default

## ~json_sax_dom_parser()

template<typename BasicJsonType>

nlohmann::detail::json_sax_dom_parser< BasicJsonType >::~json_sax_dom_parser | ( |  | ) |

default

## Member Function Documentation

## binary()

template<typename BasicJsonType>

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::binary | ( | binary_t & | val | ) |

inline

Definition at line 5922 of file json.hpp.

## boolean()

template<typename BasicJsonType>

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::boolean | ( | bool | val | ) |

inline

Definition at line 5892 of file json.hpp.

## end_array()

template<typename BasicJsonType>

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::end_array | ( |  | ) |

inline

Definition at line 5966 of file json.hpp.

## end_object()

template<typename BasicJsonType>

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::end_object | ( |  | ) |

inline

Definition at line 5947 of file json.hpp.

## handle_value()

template<typename BasicJsonType>
template<typename Value >

JSON_HEDLEY_RETURNS_NON_NULL BasicJsonType* nlohmann::detail::json_sax_dom_parser< BasicJsonType >::handle_value | ( | Value && | v | ) |

inline private

Invariant
  If the ref stack is empty, then the passed value will be the new root.
  If the ref stack contains a value, then it is an array or an object to which we can add elements

Definition at line 6000 of file json.hpp.

References JSON_ASSERT.

## is_errored()

template<typename BasicJsonType>

constexpr bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::is_errored | ( |  | ) | const

inline

Definition at line 5986 of file json.hpp.

References JSON_HEDLEY_RETURNS_NON_NULL.

Referenced by nlohmann::detail::parser< BasicJsonType, InputAdapterType >::parse().

## key()

template<typename BasicJsonType>

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::key | ( | string_t & | val | ) |

inline

Definition at line 5940 of file json.hpp.

## null()

template<typename BasicJsonType>

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::null | ( |  | ) |

inline

Definition at line 5886 of file json.hpp.

## number_float()

template<typename BasicJsonType>

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_float | ( | number_float_t | val,
|  | const string_t & |
| ) |  |

inline

Definition at line 5910 of file json.hpp.

## number_integer()

template<typename BasicJsonType>

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_integer | ( | number_integer_t | val | ) |

inline

Definition at line 5898 of file json.hpp.

## number_unsigned()

template<typename BasicJsonType>

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_unsigned | ( | number_unsigned_t | val | ) |

inline

Definition at line 5904 of file json.hpp.

## operator=() [1/2]

template<typename BasicJsonType>

json_sax_dom_parser& nlohmann::detail::json_sax_dom_parser< BasicJsonType >::operator= | ( | const json_sax_dom_parser< BasicJsonType > & |  | ) |

delete

## operator=() [2/2]

template<typename BasicJsonType>

json_sax_dom_parser& nlohmann::detail::json_sax_dom_parser< BasicJsonType >::operator= | ( | json_sax_dom_parser< BasicJsonType > && |  | ) |

default

## parse_error()

template<typename BasicJsonType>
template<class Exception >

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::parse_error | ( | std::size_t | ,
|  | const std::string & | ,
|  | const Exception & | ex
| ) |  |

inline

Definition at line 5974 of file json.hpp.

References JSON_THROW.

Referenced by nlohmann::detail::parser< BasicJsonType, InputAdapterType >::parse().

## start_array()

template<typename BasicJsonType>

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::start_array | ( | std::size_t | len | ) |

inline

Definition at line 5954 of file json.hpp.

References nlohmann::detail::out_of_range::create(), JSON_HEDLEY_UNLIKELY, JSON_THROW, and nlohmann::to_string().

## start_object()

template<typename BasicJsonType>

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::start_object | ( | std::size_t | len | ) |

inline

Definition at line 5928 of file json.hpp.

References nlohmann::detail::out_of_range::create(), JSON_HEDLEY_UNLIKELY, JSON_THROW, and nlohmann::to_string().

## string()

template<typename BasicJsonType>

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::string | ( | string_t & | val | ) |

inline

Definition at line 5916 of file json.hpp.

## Member Data Documentation

## allow_exceptions

template<typename BasicJsonType>

const bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::allow_exceptions = true

private

whether to throw exceptions in case of errors

Definition at line 6031 of file json.hpp.

## errored

template<typename BasicJsonType>

bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::errored = false

private

whether a syntax error occurred

Definition at line 6029 of file json.hpp.

## object_element

template<typename BasicJsonType>

BasicJsonType* nlohmann::detail::json_sax_dom_parser< BasicJsonType >::object_element = nullptr

private

helper to hold the reference for the next object element

Definition at line 6027 of file json.hpp.

## ref_stack

template<typename BasicJsonType>

std::vector<BasicJsonType*> nlohmann::detail::json_sax_dom_parser< BasicJsonType >::ref_stack {}

private

stack to model hierarchy of values

Definition at line 6025 of file json.hpp.

## root

template<typename BasicJsonType>

BasicJsonType& nlohmann::detail::json_sax_dom_parser< BasicJsonType >::root

private

the parsed JSON value

Definition at line 6023 of file json.hpp.

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

- json.hpp