Skip to content

# nlohmann::basic_json::error_handler_t

    enum class error_handler_t {
        strict,
        replace,
        ignore
    };

This enumeration is used in the `dump` function to choose how to treat decoding errors while serializing a `basic_json` value. Three values are differentiated:

strict
  throw a `type_error` exception in case of invalid UTF-8
replace
  replace invalid UTF-8 sequences with U+FFFD (� REPLACEMENT CHARACTER)
ignore
  ignore invalid UTF-8 sequences; all bytes are copied to the output unchanged

## Examples

Example

The example below shows how the different values of the `error_handler_t` influence the behavior of `dump` when reading serializing an invalid UTF-8 sequence.

    #include <iostream>
    #include <nlohmann/json.hpp>

    using json = nlohmann::json;

    int main()
    {
        // create JSON value with invalid UTF-8 byte sequence
        json j_invalid = "ä\xA9ü";
        try
        {
            std::cout << j_invalid.dump() << std::endl;
        }
        catch (json::type_error& e)
        {
            std::cout << e.what() << std::endl;
        }

        std::cout << "string with replaced invalid characters: "
                  << j_invalid.dump(-1, ' ', false, json::error_handler_t::replace)
                  << "\nstring with ignored invalid characters: "
                  << j_invalid.dump(-1, ' ', false, json::error_handler_t::ignore)
                  << '\n';
    }

Output:

    [json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9
    string with replaced invalid characters: "ä�ü"
    string with ignored invalid characters: "äü"

## Version history

- Added in version 3.4.0.

Last update: May 17, 2022
Back to top