parser::write

## `parser::write`

Parse a buffer containing a complete JSON text.

### Synopsis

    std::size_t
    write(
        char const* data,
        std::size_t size,
        boost::system::error_code& ec); (1)

    std::size_t
    write(
        char const* data,
        std::size_t size,
        std::error_code& ec); (2)

    std::size_t
    write(
        char const* data,
        std::size_t size); (3)

    std::size_t
    write(
        string_view s,
        boost::system::error_code& ec); (4)

    std::size_t
    write(
        string_view s,
        std::error_code& ec); (5)

    std::size_t
    write(
        string_view s); (6)

### Description

This function parses a complete JSON text contained in the specified character buffer. The entire buffer must be consumed; if there are additional characters past the end of the complete JSON text, the parse fails and an error is returned.

### Example

    parser p;                                       // construct a parser
    size_t n = p.write( "[1,2,3]" );                // parse a complete JSON text
    assert( n == 7 );                               // all characters consumed
    value jv = p.release();                         // take ownership of the value

Overloads (1), (2), (4), and (5) report errors by setting `ec`. Overloads (3) and (6) report errors by throwing exceptions.

### Complexity

- (1)–(3) linear in `size`.

- (4)–(6) linear in `s.size()`.

### Exception Safety

Basic guarantee. Calls to `memory_resource::allocate` may throw. Upon error or exception, subsequent calls will fail until `reset` is called to parse a new JSON text.

### Return Value

The number of characters consumed from the buffer.

### Parameters

Name | Description
--- | ---
`data` | A pointer to a buffer of `size` characters to parse.
`size` | The number of characters pointed to by `data`.
`ec` | Set to the error, if any occurred.
`s` | The character string to parse.

### Exceptions

Type | Thrown On
--- | ---
``boost::system::system_error`` | Thrown on error.

Edit this page