Skip to content

# nlohmann::basic_json::parse_error

    class parse_error : public exception;

This exception is thrown by the library when a parse error occurs. Parse errors can occur during the deserialization of JSON text, BSON, CBOR, MessagePack, UBJSON, as well as when using JSON Patch.

Member `byte` holds the byte index of the last read character in the input file (see note below).

Exceptions have ids 1xx (see list of parse errors).

## Member functions

- what - returns explanatory string

## Member variables

- id - the id of the exception
- byte - byte index of the parse error

## Notes

For an input with n
bytes, 1 is the index of the first character and n+1
is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector for binary formats.

## Examples

Example

The following code shows how a `parse_error` exception can be caught.

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

    using json = nlohmann::json;

    int main()
    {
        try
        {
            // parsing input with a syntax error
            json::parse("[1,2,3,]");
        }
        catch (json::parse_error& e)
        {
            // output exception information
            std::cout << "message: " << e.what() << '\n'
                      << "exception id: " << e.id << '\n'
                      << "byte position of error: " << e.byte << std::endl;
        }
    }

Output:

    message: [json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal
    exception id: 101
    byte position of error: 8

## See also

- List of parse errors
- `invalid_iterator` for exceptions indicating errors with iterators
- `type_error` for exceptions indicating executing a member function with a wrong type
- `out_of_range` for exceptions indicating access out of the defined range
- `other_error` for exceptions indicating other library errors

## Version history

- Since version 3.0.0.

Last update: May 1, 2022
Back to top