Files
json/docs/mkdocs/docs/api/json_sax/index.md
T
Niels Lohmann ab52c98f71 Merge remote-tracking branch 'origin/develop' into claude/fix-issue-3989-db7e45
Signed-off-by: Niels Lohmann <mail@nlohmann.me>

# Conflicts:
#	docs/mkdocs/docs/api/json_sax/parse_error.md
#	docs/mkdocs/docs/features/parsing/index.md
2026-10-02 11:38:09 +02:00

2.9 KiB

nlohmann::json_sax

template<typename BasicJsonType>
struct json_sax;

This class describes the SAX interface used by sax_parse. Each function is called in different situations while the input is parsed. The boolean return value informs the parser whether to continue processing the input; for parse_error, it decides whether to recover from the error.

For instance, parsing the JSON text {"a": [1, true]} triggers the following callbacks, in order:

sequenceDiagram
    participant P as Parser
    participant H as SAX handler

    P->>H: start_object(elements)
    P->>H: key("a")
    P->>H: start_array(elements)
    P->>H: number_unsigned(1)
    P->>H: boolean(true)
    P->>H: end_array()
    P->>H: end_object()

Note elements is passed as #!cpp std::numeric_limits<std::size_t>::max() (i.e., "unknown") for JSON text input; only binary formats such as CBOR or MessagePack may report the actual number of elements in start_object/ start_array. Also note that 1 is reported via number_unsigned rather than number_integer because it has no leading - sign.

Template parameters

BasicJsonType
a specialization of basic_json

Member types

Member functions

  • binary (virtual) - a binary value was read
  • boolean (virtual) - a boolean value was read
  • end_array (virtual) - the end of an array was read
  • end_object (virtual) - the end of an object was read
  • key (virtual) - an object key was read
  • null (virtual) - a null value was read
  • number_float (virtual) - a floating-point number was read
  • number_integer (virtual) - an integer number was read
  • number_unsigned (virtual) - an unsigned integer number was read
  • parse_error (virtual) - a parse error occurred
  • start_array (virtual) - the beginning of an array was read
  • start_object (virtual) - the beginning of an object was read
  • string (virtual) - a string value was read

Version history

  • Added in version 3.2.0.
  • Support for binary values (binary_t, binary) added in version 3.8.0.