...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Parse a buffer containing all or part of a complete JSON.
std::size_t write_some( char const* data, std::size_t size, std::error_code& ec);
This function parses JSON contained in the specified character buffer. If parsing completes, any additional characters past the end of the complete JSON are ignored. The function returns the actual number of characters parsed, which may be less than the size of the input. This allows parsing of a buffer containing multiple individual JSONs or containing different protocol data.
stream_parser p; // construct a parser std::size_t n; // number of characters used n = p.write_some( "[1,2" ); // parse the first part of the JSON assert( n == 4 ); // all characters consumed n = p.write_some( "3,4] null" ); // parse the rest of the JSON assert( n == 5 ); // only some characters consumed value jv = p.release(); // take ownership of the value
To indicate there are no more character buffers, such as when done
returns false
after writing, call finish
.
Linear in size
.
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.
The number of characters consumed from the buffer.
Name |
Description |
---|---|
|
A pointer to a buffer of |
|
The number of characters pointed to by |
|
Set to the error, if any occurred. |