Compare commits

..
Author SHA1 Message Date
Niels Lohmann 172eba6e46 docs: cross-link concept pages and API pages in See also sections
Add See also links in both directions between the concept pages (features,
home, integration) and the API pages, write API links in code font, give every
entry a comment after a dash, and show the callback event figure on the parser
callbacks page.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-26 16:17:03 +01:00
Niels Lohmann 02d05057a5 docs: macro chooser generates adl_serializer for non-default-constructible types
Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-26 11:17:22 +01:00
Niels Lohmann 444dba381f docs: add figures, table captions and a macro chooser
- Figures with numbered captions: SAX stepper, json_view layout and edit
  stepper, exception map, JSON pointer and patch walkers, QA pipeline,
  scaling and binary size charts, roadmap lanes, release timeline,
  integration decision tree and namespace builder
- Table captions (nj-table-caption) on 9 pages
- Compile times: modules and PCH charts, filesystem section, re-measured
  Figure 1, links between features/modules.md and compile_times.md
- Interactive macro chooser for features/arbitrary_types.md
- Link check: exclude URLs that answer the plugin with 400/401/419 or are
  dead (customers.md)

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-26 10:42:00 +01:00
Niels Lohmann 44f1bec789 docs: new design for the documentation site
Apply the brand to the Material for MkDocs site: Inter and JetBrains Mono
served by the site (upright and real italic), brand colours, blue header band
with the syntax pattern, wordmark in the header, new home page (hero, cards,
animated feature tour), 404 page, polish for tabs, search, footer, focus
rings, tables and code blocks, and theme features (code copy, previous/next
footer, TOC follow, search suggestions).

Draw the number railroad diagram, the parser callback events and the iterator
illustrations as inline SVGs that follow the light and dark scheme. The
generator scripts are in docs/mkdocs/scripts/figures; the feature slideshow
(json-light.svg, json-dark.svg, replacing json.gif on the home page) is built
by docs/mkdocs/scripts/slideshow. Decision nodes in five flowcharts become
hexagons, which need far less room.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-25 20:40:26 +01:00
416 changed files with 10615 additions and 2682 deletions

No files matched your search

@@ -67,7 +67,9 @@ class (either explicitly or via the conversion operators).
## See also ## See also
- [to_json](to_json.md) - [`to_json`](to_json.md) - convert a C++ value to JSON
- [Arbitrary Type Conversions](../../features/arbitrary_types.md) - write your own `from_json` and `to_json` functions
- [Converting values](../../features/conversions.md) - overview of `get`, `get_to` and implicit conversions
## Version history ## Version history
+4 -4
View File
@@ -33,10 +33,10 @@ struct adl_serializer {
## See also ## See also
- [Arbitrary type conversions](../../features/arbitrary_types.md) - how to make your types convertible - [Arbitrary type conversions](../../features/arbitrary_types.md) - how to make your types convertible
- [**get**](../basic_json/get.md) / [**get_to**](../basic_json/get_to.md) - convert a JSON value to a C++ type - [`get`](../basic_json/get.md) - / [`get_to`](../basic_json/get_to.md) - convert a JSON value to a C++ type
- [**basic_json**](../basic_json/basic_json.md) - construct a JSON value from a C++ value - [`basic_json`](../basic_json/basic_json.md) - construct a JSON value from a C++ value
- [**NLOHMANN_DEFINE_TYPE_INTRUSIVE**](../macros/nlohmann_define_type_intrusive.md) - generate the conversion functions for a type - [`NLOHMANN_DEFINE_TYPE_INTRUSIVE`](../macros/nlohmann_define_type_intrusive.md) - generate the conversion functions for a type
- [Specializing enum conversion](../../features/enum_conversion.md) - [Specializing enum conversion](../../features/enum_conversion.md) - serializing enums as JSON strings
## Version history ## Version history
@@ -36,7 +36,9 @@ This function is usually called by the constructors of the [basic_json](../basic
## See also ## See also
- [from_json](from_json.md) - [`from_json`](from_json.md) - convert JSON to a C++ value
- [Arbitrary Type Conversions](../../features/arbitrary_types.md) - write your own `from_json` and `to_json` functions
- [Converting values](../../features/conversions.md) - overview of `get`, `get_to` and implicit conversions
## Version history ## Version history
+8 -3
View File
@@ -148,15 +148,20 @@ outside of a string, invalid) byte; see the [FAQ entry](../../home/faq.md#nul-by
## See also ## See also
- [parse](parse.md) - deserialize from a compatible input - [`parse`](parse.md) - deserialize from a compatible input
- [sax_parse](sax_parse.md) - parse input using the SAX interface - [`sax_parse`](sax_parse.md) - parse input using the SAX interface
- [operator>>](../operator_gtgt.md) - deserialize from stream - [`operator>>`](../operator_gtgt.md) - deserialize from stream
- [`JSON_STRICT_NUL_HANDLING`](../macros/json_strict_nul_handling.md) - opt in to rejecting a NUL byte in the input - [`JSON_STRICT_NUL_HANDLING`](../macros/json_strict_nul_handling.md) - opt in to rejecting a NUL byte in the input
instead of treating it as end of input instead of treating it as end of input
- [`JSON_DISABLE_STREAM_BULK_SCAN`](../macros/json_disable_stream_bulk_scan.md) - read a `std::istream` one character - [`JSON_DISABLE_STREAM_BULK_SCAN`](../macros/json_disable_stream_bulk_scan.md) - read a `std::istream` one character
at a time at a time
- [`JSON_DISABLE_UNLOCKED_FILE_IO`](../macros/json_disable_unlocked_file_io.md) - read a `FILE*` with the locking stdio - [`JSON_DISABLE_UNLOCKED_FILE_IO`](../macros/json_disable_unlocked_file_io.md) - read a `FILE*` with the locking stdio
functions functions
- [Parsing](../../features/parsing/index.md) - overview of the parsing functions
- [Comments](../../features/comments.md) - ignore `//` and `/* */` comments while parsing
- [Trailing Commas](../../features/trailing_commas.md) - accept trailing commas in arrays and objects
- [Parsing and Exceptions](../../features/parsing/parse_exceptions.md) - handling parse errors and locating them in the input
- [Parsing Untrusted Input](../../features/parsing/untrusted_input.md) - limits and checks for input you do not control
## Version history ## Version history
+6 -4
View File
@@ -69,10 +69,12 @@ Arrays are stored as pointers in a `basic_json` type. That is, for any access to
## See also ## See also
- [object_t](object_t.md) the type used to store JSON objects - [`object_t`](object_t.md) - the type used to store JSON objects
- [binary_t](binary_t.md) the type used to store binary values - [`binary_t`](binary_t.md) - the type used to store binary values
- [is_array](is_array.md) checks whether the JSON value is an array - [`is_array`](is_array.md) - checks whether the JSON value is an array
- [max_size](max_size.md) returns the maximum possible number of elements - [`max_size`](max_size.md) - returns the maximum possible number of elements
- [Types](../../features/types/index.md) - how arrays are stored
- [Template Parameter Requirements](../../features/types/template_parameters.md) - requirements on the `ArrayType` template parameter
## Version history ## Version history
@@ -46,7 +46,8 @@ The function is equivalent to `static_cast<json_base_class_t&>(j)` (or `static_c
## See also ## See also
- [json_base_class_t](json_base_class_t.md) - type of the custom base class - [`json_base_class_t`](json_base_class_t.md) - type of the custom base class
- [Template Parameter Requirements](../../features/types/template_parameters.md) - requirements on the `CustomBaseClass` template parameter
## Version history ## Version history
+6 -4
View File
@@ -230,10 +230,12 @@ Strong exception safety: if an exception occurs, the original value stays intact
## See also ## See also
- documentation on [checked access](../../features/element_access/checked_access.md) - [Checked access](../../features/element_access/checked_access.md) - element access with range checking
- [`operator[]`](operator%5B%5D.md) for unchecked access by reference - [`operator[]`](operator%5B%5D.md) - unchecked access by reference
- [`value`](value.md) for access with default value - [`value`](value.md) - access with default value
- [basic_json_view::at](../basic_json_view/at.md) - the same access on a zero-copy view - [`basic_json_view::at`](../basic_json_view/at.md) - the same access on a zero-copy view
- [Element Access](../../features/element_access/index.md) - overview of all ways to access elements
- [JSON Pointer](../../features/json_pointer.md) - access nested values with a pointer
## Version history ## Version history
+3 -2
View File
@@ -57,8 +57,9 @@ Constant.
## See also ## See also
- [front](front.md) to access the first element - [`front`](front.md) - to access the first element
- [basic_json_view::back](../basic_json_view/back.md) - the same access on a zero-copy view - [`basic_json_view::back`](../basic_json_view/back.md) - the same access on a zero-copy view
- [Element Access](../../features/element_access/index.md) - overview of all ways to access elements
## Version history ## Version history
+13 -9
View File
@@ -113,19 +113,22 @@ basic_json(basic_json&& other) noexcept;
```mermaid ```mermaid
flowchart TD flowchart TD
A(["initializer_list init"]) --> B{"empty, or every element is a 2-element<br/>array whose first element is a string?"} A(["initializer_list init"]) --> B{{"empty, or every element is a 2-element<br/>array whose first element is a string?"}}
B -->|"yes"| C{"type_deduction"} B -->|"yes"| C{{"type_deduction"}}
B -->|"no"| D{"type_deduction"} B -->|"no"| D{{"type_deduction"}}
C -->|"true"| OBJ["create object"] C -->|"true"| OBJ["create object"]
C -->|"false"| E{"manual_type"} C -->|"false"| E{{"manual_type"}}
E -->|"object"| OBJ E -->|"object"| OBJ
E -->|"array"| ARR["create array"] E -->|"array"| ARR["create array"]
D -->|"true"| ARR D -->|"true"| ARR
D -->|"false"| F{"manual_type"} D -->|"false"| F{{"manual_type"}}
F -->|"array"| ARR F -->|"array"| ARR
F -->|"object"| ERR["throw type_error.301"] F -->|"object"| ERR["throw type_error.301"]
``` ```
<p class="nj-caption" markdown>Decision flow for an initializer list: hexagons are checks, edge labels are their
outcomes, and rectangles are the resulting value or exception.</p>
The rules aim to create the best fit between a C++ initializer list and JSON values. The rationale is as follows: The rules aim to create the best fit between a C++ initializer list and JSON values. The rationale is as follows:
1. The empty initializer list is written as `#!cpp {}` which is exactly an empty JSON object. 1. The empty initializer list is written as `#!cpp {}` which is exactly an empty JSON object.
@@ -473,12 +476,13 @@ basic_json(basic_json&& other) noexcept;
## See also ## See also
- [array](array.md) create a JSON array value, forcing array creation from an initializer list even when it looks like - [`array`](array.md) - create a JSON array value, forcing array creation from an initializer list even when it looks like
an object an object
- [object](object.md) create a JSON object value, forcing object creation from an initializer list - [`object`](object.md) - create a JSON object value, forcing object creation from an initializer list
- [binary](binary.md) create a JSON binary array value - [`binary`](binary.md) - create a JSON binary array value
- [operator=](operator=.md) copy assignment operator - [`operator=`](operator=.md) - copy assignment operator
- [Creating JSON values](../../features/creating_values.md) - the article on creating JSON values - [Creating JSON values](../../features/creating_values.md) - the article on creating JSON values
- [Converting values](../../features/conversions.md) - which C++ types can be converted
## Version history ## Version history
+11 -6
View File
@@ -7,7 +7,12 @@ const_iterator begin() const noexcept;
Returns an iterator to the first element. Returns an iterator to the first element.
![Illustration from cppreference.com](../../images/range-begin-end.svg) <div class="nj-fig-wrap" markdown>
--8<-- "images/range-begin-end.svg"
</div>
<p class="nj-caption" markdown>`begin()` points to the first element and `end()` to the position after the last element;
the dashed cell is the past-the-last position, which must not be dereferenced.</p>
## Return value ## Return value
@@ -39,12 +44,12 @@ Constant.
## See also ## See also
- [end](end.md) returns an iterator to one past the last element - [`end`](end.md) - returns an iterator to one past the last element
- [cbegin](cbegin.md) returns a const iterator to the first element - [`cbegin`](cbegin.md) - returns a const iterator to the first element
- [rbegin](rbegin.md) returns a reverse iterator to the last element - [`rbegin`](rbegin.md) - returns a reverse iterator to the last element
- [items](items.md) returns an iteration proxy to access keys and values during range-based for loops - [`items`](items.md) - returns an iteration proxy to access keys and values during range-based for loops
- [Iterators](../../features/iterators.md) - the article on iterators - [Iterators](../../features/iterators.md) - the article on iterators
- [basic_json_view::begin](../basic_json_view/begin.md) - the same iteration on a zero-copy view (in document order, - [`basic_json_view::begin`](../basic_json_view/begin.md) - the same iteration on a zero-copy view (in document order,
not sorted by key) not sorted by key)
## Version history ## Version history
+5 -4
View File
@@ -63,10 +63,11 @@ initialization of a binary array type, for backwards compatibility and so it doe
## See also ## See also
- [binary_t](binary_t.md) type for binary values - [Binary formats](../../features/binary_formats/index.md) - formats that can store binary values
- [get_binary](get_binary.md) get a reference to the stored binary value - [`binary_t`](binary_t.md) - type for binary values
- [is_binary](is_binary.md) return whether the value is binary - [`get_binary`](get_binary.md) - get a reference to the stored binary value
- [byte_container_with_subtype](../byte_container_with_subtype/index.md) container for binary values with subtype - [`is_binary`](is_binary.md) - return whether the value is binary
- [`byte_container_with_subtype`](../byte_container_with_subtype/index.md) - container for binary values with subtype
- [Binary Values](../../features/binary_values.md) - the article on binary values - [Binary Values](../../features/binary_values.md) - the article on binary values
## Version history ## Version history
+3 -1
View File
@@ -117,7 +117,9 @@ type `#!cpp binary_t*` must be dereferenced.
## See also ## See also
- [byte_container_with_subtype](../byte_container_with_subtype/index.md) - [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled
- [Binary formats](../../features/binary_formats/index.md) - formats that can store binary values
- [`byte_container_with_subtype`](../byte_container_with_subtype/index.md) - container type used by binary values
## Version history ## Version history
+3 -1
View File
@@ -47,7 +47,9 @@ Boolean values are stored directly inside a `basic_json` type.
## See also ## See also
- [is_boolean](is_boolean.md) checks whether the JSON value is a boolean - [`is_boolean`](is_boolean.md) - checks whether the JSON value is a boolean
- [Types](../../features/types/index.md) - how booleans are stored
- [Template Parameter Requirements](../../features/types/template_parameters.md) - requirements on the `BooleanType` template parameter
## Version history ## Version history
+10 -5
View File
@@ -6,7 +6,12 @@ const_iterator cbegin() const noexcept;
Returns an iterator to the first element. Returns an iterator to the first element.
![Illustration from cppreference.com](../../images/range-begin-end.svg) <div class="nj-fig-wrap" markdown>
--8<-- "images/range-begin-end.svg"
</div>
<p class="nj-caption" markdown>`cbegin()` points to the first element, like `begin()`, and `end()` to the position after
the last element; the dashed cell is the past-the-last position, which must not be dereferenced.</p>
## Return value ## Return value
@@ -38,11 +43,11 @@ Constant.
## See also ## See also
- [begin](begin.md) returns an iterator to the first element - [`begin`](begin.md) - returns an iterator to the first element
- [cend](cend.md) returns a const iterator to one past the last element - [`cend`](cend.md) - returns a const iterator to one past the last element
- [crbegin](crbegin.md) returns a const reverse iterator to the last element - [`crbegin`](crbegin.md) - returns a const reverse iterator to the last element
- [Iterators](../../features/iterators.md) - the article on iterators - [Iterators](../../features/iterators.md) - the article on iterators
- [basic_json_view::cbegin](../basic_json_view/cbegin.md) - the same iteration on a zero-copy view - [`basic_json_view::cbegin`](../basic_json_view/cbegin.md) - the same iteration on a zero-copy view
## Version history ## Version history
@@ -40,9 +40,10 @@ store
## See also ## See also
- [from_cbor](from_cbor.md) deserializes a JSON value from CBOR - [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled
- [input_format_t](input_format_t.md) the enumeration of supported input formats - [`from_cbor`](from_cbor.md) - deserializes a JSON value from CBOR
- [CBOR](../../features/binary_formats/cbor.md) - the article on the CBOR format - [`input_format_t`](input_format_t.md) - the enumeration of supported input formats
- [`CBOR`](../../features/binary_formats/cbor.md) - the article on the CBOR format
## Version history ## Version history
+10 -5
View File
@@ -6,7 +6,12 @@ const_iterator cend() const noexcept;
Returns an iterator to one past the last element. Returns an iterator to one past the last element.
![Illustration from cppreference.com](../../images/range-begin-end.svg) <div class="nj-fig-wrap" markdown>
--8<-- "images/range-begin-end.svg"
</div>
<p class="nj-caption" markdown>`cend()` points to the position after the last element, like `end()`, and `begin()` to
the first element; the dashed cell is the past-the-last position, which must not be dereferenced.</p>
## Return value ## Return value
@@ -38,11 +43,11 @@ Constant.
## See also ## See also
- [end](end.md) returns an iterator to one past the last element - [`end`](end.md) - returns an iterator to one past the last element
- [cbegin](cbegin.md) returns a const iterator to the first element - [`cbegin`](cbegin.md) - returns a const iterator to the first element
- [crend](crend.md) returns a const reverse iterator to one before the first element - [`crend`](crend.md) - returns a const reverse iterator to one before the first element
- [Iterators](../../features/iterators.md) - the article on iterators - [Iterators](../../features/iterators.md) - the article on iterators
- [basic_json_view::cend](../basic_json_view/cend.md) - the same iteration on a zero-copy view - [`basic_json_view::cend`](../basic_json_view/cend.md) - the same iteration on a zero-copy view
## Version history ## Version history
+3 -2
View File
@@ -54,8 +54,9 @@ All iterators, pointers, and references related to this container are invalidate
## See also ## See also
- [erase](erase.md) removes elements from a JSON value - [`erase`](erase.md) - removes elements from a JSON value
- [empty](empty.md) checks whether the JSON value has no elements - [`empty`](empty.md) - checks whether the JSON value has no elements
- [Modifying values](../../features/modifying_values.md) - the article on modifying values
## Version history ## Version history
+4 -3
View File
@@ -134,9 +134,10 @@ Logarithmic in the size of the JSON object.
## See also ## See also
- [find](find.md) find a value in an object - [`find`](find.md) - find a value in an object
- [count](count.md) returns the number of occurrences of a key - [`count`](count.md) - returns the number of occurrences of a key
- [basic_json_view::contains](../basic_json_view/contains.md) - the same check on a zero-copy view - [`basic_json_view::contains`](../basic_json_view/contains.md) - the same check on a zero-copy view
- [Element Access](../../features/element_access/index.md#does-this-key-exist) - how to test whether a key exists
## Version history ## Version history
+4 -3
View File
@@ -85,9 +85,10 @@ Logarithmic in the size of the JSON object.
## See also ## See also
- [find](find.md) find a value in an object - [`find`](find.md) - find a value in an object
- [contains](contains.md) checks whether a key exists - [`contains`](contains.md) - checks whether a key exists
- [basic_json_view::count](../basic_json_view/count.md) - the same check on a zero-copy view - [`basic_json_view::count`](../basic_json_view/count.md) - the same check on a zero-copy view
- [Element Access](../../features/element_access/index.md#does-this-key-exist) - how to test whether a key exists
## Version history ## Version history
+10 -4
View File
@@ -6,7 +6,13 @@ const_reverse_iterator crbegin() const noexcept;
Returns an iterator to the reverse-beginning; that is, the last element. Returns an iterator to the reverse-beginning; that is, the last element.
![Illustration from cppreference.com](../../images/range-rbegin-rend.svg) <div class="nj-fig-wrap" markdown>
--8<-- "images/range-rbegin-rend.svg"
</div>
<p class="nj-caption" markdown>`crbegin()` points to the last element, like `rbegin()`, and `rend()` to the position
before the first element. The upper row is the reversed sequence and the lower row the forward sequence; dashed arrows
link each reverse iterator to the forward iterator it stores, and dashed cells are past-the-last positions.</p>
## Return value ## Return value
@@ -38,9 +44,9 @@ Constant.
## See also ## See also
- [crend](crend.md) returns a const reverse iterator to one before the first element - [`crend`](crend.md) - returns a const reverse iterator to one before the first element
- [rbegin](rbegin.md) returns a reverse iterator to the last element - [`rbegin`](rbegin.md) - returns a reverse iterator to the last element
- [cbegin](cbegin.md) returns a const iterator to the first element - [`cbegin`](cbegin.md) - returns a const iterator to the first element
- [Iterators](../../features/iterators.md) - the article on iterators - [Iterators](../../features/iterators.md) - the article on iterators
## Version history ## Version history
+10 -4
View File
@@ -7,7 +7,13 @@ const_reverse_iterator crend() const noexcept;
Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder,
attempting to access it results in undefined behavior. attempting to access it results in undefined behavior.
![Illustration from cppreference.com](../../images/range-rbegin-rend.svg) <div class="nj-fig-wrap" markdown>
--8<-- "images/range-rbegin-rend.svg"
</div>
<p class="nj-caption" markdown>`crend()` points to the position before the first element, like `rend()`, and `rbegin()`
to the last element. The upper row is the reversed sequence and the lower row the forward sequence; dashed arrows link
each reverse iterator to the forward iterator it stores, and dashed cells are past-the-last positions.</p>
## Return value ## Return value
@@ -39,9 +45,9 @@ Constant.
## See also ## See also
- [crbegin](crbegin.md) returns a const reverse iterator to the last element - [`crbegin`](crbegin.md) - returns a const reverse iterator to the last element
- [rend](rend.md) returns a reverse iterator to one before the first element - [`rend`](rend.md) - returns a reverse iterator to one before the first element
- [cend](cend.md) returns a const iterator to one past the last element - [`cend`](cend.md) - returns a const iterator to one past the last element
- [Iterators](../../features/iterators.md) - the article on iterators - [Iterators](../../features/iterators.md) - the article on iterators
## Version history ## Version history
@@ -32,8 +32,10 @@ The actual comparator used depends on [`object_t`](object_t.md) and can be obtai
## See also ## See also
- [object_comparator_t](object_comparator_t.md) the comparator actually used by `object_t` - [`object_comparator_t`](object_comparator_t.md) - the comparator actually used by `object_t`
- [object_t](object_t.md) the type used to store JSON objects - [`object_t`](object_t.md) - the type used to store JSON objects
- [Template Parameter Requirements](../../features/types/template_parameters.md) - requirements on the `ObjectType` template parameter
- [Object order](../../features/object_order.md) - preserve the insertion order of keys
## Version history ## Version history
+6 -5
View File
@@ -55,11 +55,12 @@ Currently, only `remove`, `add`, and `replace` operations are generated.
## See also ## See also
- [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) - [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) - specification of JSON Patch
- [patch](patch.md) applies a JSON Patch - [`patch`](patch.md) - applies a JSON Patch
- [patch_inplace](patch_inplace.md) applies a JSON Patch in place - [`patch_inplace`](patch_inplace.md) - applies a JSON Patch in place
- [merge_patch](merge_patch.md) applies a JSON Merge Patch - [`merge_patch`](merge_patch.md) - applies a JSON Merge Patch
- [merge_diff](merge_diff.md) creates a diff as a JSON Merge Patch - [`merge_diff`](merge_diff.md) - creates a diff as a JSON Merge Patch
- [JSON Patch and Diff](../../features/json_patch.md) - the article on JSON Patch
## Version history ## Version history
+3 -3
View File
@@ -89,9 +89,9 @@ Binary values are serialized as an object containing two keys:
## See also ## See also
- [to_string](to_string.md) returns a string representation of a JSON value - [`to_string`](to_string.md) - returns a string representation of a JSON value
- [operator<<](../operator_ltlt.md) serialize to stream - [`operator<<`](../operator_ltlt.md) - serialize to stream
- [`basic_json_view::dump`](../basic_json_view/dump.md) the corresponding function of `basic_json_view`, serializing - [`basic_json_view::dump`](../basic_json_view/dump.md) - the corresponding function of `basic_json_view`, serializing
directly from a flat index without building a `basic_json` value directly from a flat index without building a `basic_json` value
- [Serialization](../../features/serialization.md) - the serialization article - [Serialization](../../features/serialization.md) - the serialization article
+2 -2
View File
@@ -63,8 +63,8 @@ Logarithmic in the size of the container, O(log(`size()`)).
## See also ## See also
- [emplace_back](emplace_back.md) add a value to an array - [`emplace_back`](emplace_back.md) - add a value to an array
- [insert](insert.md) add values to an array/object - [`insert`](insert.md) - add values to an array/object
- [Modifying values](../../features/modifying_values.md) - the article on modifying values - [Modifying values](../../features/modifying_values.md) - the article on modifying values
## Version history ## Version history
@@ -61,8 +61,8 @@ Amortized constant.
## See also ## See also
- [operator+=](operator+=.md) add a value to an array/object - [`operator+=`](operator+=.md) - add a value to an array/object
- [push_back](push_back.md) add a value to an array/object - [`push_back`](push_back.md) - add a value to an array/object
- [Modifying values](../../features/modifying_values.md) - the article on modifying values - [Modifying values](../../features/modifying_values.md) - the article on modifying values
## Version history ## Version history
+3 -3
View File
@@ -62,9 +62,9 @@ itself is empty which is `#!cpp false` in the case of a string.
## See also ## See also
- [size](size.md) returns the number of elements - [`size`](size.md) - returns the number of elements
- [clear](clear.md) clears the content and resets the value to the default value - [`clear`](clear.md) - clears the content and resets the value to the default value
- [basic_json_view::empty](../basic_json_view/empty.md) - the same check on a zero-copy view - [`basic_json_view::empty`](../basic_json_view/empty.md) - the same check on a zero-copy view
## Version history ## Version history
+10 -5
View File
@@ -7,7 +7,12 @@ const_iterator end() const noexcept;
Returns an iterator to one past the last element. Returns an iterator to one past the last element.
![Illustration from cppreference.com](../../images/range-begin-end.svg) <div class="nj-fig-wrap" markdown>
--8<-- "images/range-begin-end.svg"
</div>
<p class="nj-caption" markdown>`end()` points to the position after the last element and `begin()` to the first element;
the dashed cell is the past-the-last position, which must not be dereferenced.</p>
## Return value ## Return value
@@ -39,11 +44,11 @@ Constant.
## See also ## See also
- [begin](begin.md) returns an iterator to the first element - [`begin`](begin.md) - returns an iterator to the first element
- [cend](cend.md) returns a const iterator to one past the last element - [`cend`](cend.md) - returns a const iterator to one past the last element
- [rend](rend.md) returns a reverse iterator to one before the first element - [`rend`](rend.md) - returns a reverse iterator to one before the first element
- [Iterators](../../features/iterators.md) - the article on iterators - [Iterators](../../features/iterators.md) - the article on iterators
- [basic_json_view::end](../basic_json_view/end.md) - the same iteration on a zero-copy view - [`basic_json_view::end`](../basic_json_view/end.md) - the same iteration on a zero-copy view
## Version history ## Version history
+3 -2
View File
@@ -60,8 +60,9 @@ Constant.
## See also ## See also
- [start_pos](start_pos.md) to access the start position - [`start_pos`](start_pos.md) - to access the start position
- [JSON_DIAGNOSTIC_POSITIONS](../macros/json_diagnostic_positions.md) for an overview of the diagnostic positions - [`JSON_DIAGNOSTIC_POSITIONS`](../macros/json_diagnostic_positions.md) - overview of the supported conversions
- [Parsing and Exceptions](../../features/parsing/parse_exceptions.md) - handling parse errors and locating them in the input
## Version history ## Version history
+2 -2
View File
@@ -204,8 +204,8 @@ Strong exception safety: if an exception occurs, the original value stays intact
## See also ## See also
- [clear](clear.md) clears the contents - [`clear`](clear.md) - clears the contents
- [insert](insert.md) add values to an array/object - [`insert`](insert.md) - add values to an array/object
- [Modifying values](../../features/modifying_values.md) - the article on modifying values - [Modifying values](../../features/modifying_values.md) - the article on modifying values
## Version history ## Version history
@@ -61,7 +61,7 @@ keep
## See also ## See also
- [dump](dump.md) serializes a JSON value, with an `error_handler_t` parameter to configure invalid UTF-8 handling - [`dump`](dump.md) - serializes a JSON value, with an `error_handler_t` parameter to configure invalid UTF-8 handling
- [Handling invalid UTF-8](../../features/serialization.md#handling-invalid-utf-8) - the article on handling invalid UTF-8 - [Handling invalid UTF-8](../../features/serialization.md#handling-invalid-utf-8) - the article on handling invalid UTF-8
## Version history ## Version history
+8 -1
View File
@@ -40,6 +40,9 @@ classDiagram
style json_exception fill:#CCCCFF style json_exception fill:#CCCCFF
``` ```
<p class="nj-caption" markdown>Class hierarchy of the library's exceptions; arrows point from a derived class to its
base class, and the highlighted box is `basic_json::exception`.</p>
Subclasses: Subclasses:
- [`parse_error`](parse_error.md) for exceptions indicating a parse error - [`parse_error`](parse_error.md) for exceptions indicating a parse error
@@ -80,7 +83,11 @@ constructor.
## See also ## See also
[List of exceptions](../../home/exceptions.md) - [List of exceptions](../../home/exceptions.md) - overview of all exceptions thrown by the library
- [Working Without Exceptions](../../features/no_exceptions.md) - using the library without exceptions
- [`JSON_DIAGNOSTICS`](../macros/json_diagnostics.md) - extended exception messages with the path of the failing value
- [Parsing and Exceptions](../../features/parsing/parse_exceptions.md) - parsing alternatives that do not throw
- [Debugging](../../home/debugging.md) - debugging aids
## Version history ## Version history
+4 -3
View File
@@ -91,10 +91,11 @@ Logarithmic in the size of the JSON object.
## See also ## See also
- [count](count.md) returns the number of occurrences of a key - [`count`](count.md) - returns the number of occurrences of a key
- [contains](contains.md) checks whether a key exists - [`contains`](contains.md) - checks whether a key exists
- [basic_json_view::find](../basic_json_view/find.md) - the same lookup on a zero-copy view (a duplicate key resolves - [`basic_json_view::find`](../basic_json_view/find.md) - the same lookup on a zero-copy view (a duplicate key resolves
to the first member, whereas `parse()` keeps the last) to the first member, whereas `parse()` keeps the last)
- [Element Access](../../features/element_access/index.md#does-this-key-exist) - how to test whether a key exists
## Version history ## Version history
+2 -1
View File
@@ -58,7 +58,8 @@ Empty objects and arrays are flattened to `#!json null` and will not be reconstr
## See also ## See also
- [unflatten](unflatten.md) the reverse function - [`unflatten`](unflatten.md) - the reverse function
- [JSON Pointer](../../features/json_pointer.md#flatten-unflatten) - the article on JSON Pointer and flattening
## Version history ## Version history
+2 -2
View File
@@ -86,8 +86,8 @@ std::string format_as(const BasicJsonType& j)
## See also ## See also
- [dump](dump.md) - [`dump`](dump.md) - serialize a JSON value to a string
- [std::formatter<basic_json>](std_formatter.md) - the `std::format` (C++20) equivalent - [`std::formatter<basic_json>`](std_formatter.md) - the `std::format` (C++20) equivalent
- [Serialization](../../features/serialization.md) - the serialization article - [Serialization](../../features/serialization.md) - the serialization article
## Version history ## Version history
+10 -6
View File
@@ -107,12 +107,16 @@ Linear in the size of the input.
## See also ## See also
- [to_bjdata](to_bjdata.md) create a BJData serialization of a JSON value - [BJData](../../features/binary_formats/bjdata.md) - the format, its byte layout and how values are mapped
- [from_cbor](from_cbor.md) create a JSON value from an input in CBOR format - [Binary formats](../../features/binary_formats/index.md) - overview and comparison of the supported binary formats
- [from_msgpack](from_msgpack.md) create a JSON value from an input in MessagePack format - [Parsing untrusted input](../../features/parsing/untrusted_input.md) - limits and safe handling of hostile data
- [from_bson](from_bson.md) create a JSON value from an input in BSON format - [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled
- [from_ubjson](from_ubjson.md) create a JSON value from an input in UBJSON format - [`to_bjdata`](to_bjdata.md) - create a BJData serialization of a JSON value
- [from_bon8](from_bon8.md) create a JSON value from an input in BON8 format - [`from_cbor`](from_cbor.md) - create a JSON value from an input in CBOR format
- [`from_msgpack`](from_msgpack.md) - create a JSON value from an input in MessagePack format
- [`from_bson`](from_bson.md) - create a JSON value from an input in BSON format
- [`from_ubjson`](from_ubjson.md) - create a JSON value from an input in UBJSON format
- [`from_bon8`](from_bon8.md) - create a JSON value from an input in BON8 format
## Version history ## Version history
+9 -6
View File
@@ -96,12 +96,15 @@ Linear in the size of the input.
## See also ## See also
- [to_bon8](to_bon8.md) create a BON8 serialization of a JSON value - [`BON8`](../../features/binary_formats/bon8.md) - the format, its byte layout and how values are mapped
- [from_cbor](from_cbor.md) create a JSON value from an input in CBOR format - [Binary formats](../../features/binary_formats/index.md) - overview and comparison of the supported binary formats
- [from_msgpack](from_msgpack.md) create a JSON value from an input in MessagePack format - [Parsing untrusted input](../../features/parsing/untrusted_input.md) - limits and safe handling of hostile data
- [from_bson](from_bson.md) create a JSON value from an input in BSON format - [`to_bon8`](to_bon8.md) - create a BON8 serialization of a JSON value
- [from_ubjson](from_ubjson.md) create a JSON value from an input in UBJSON format - [`from_cbor`](from_cbor.md) - create a JSON value from an input in CBOR format
- [from_bjdata](from_bjdata.md) create a JSON value from an input in BJData format - [`from_msgpack`](from_msgpack.md) - create a JSON value from an input in MessagePack format
- [`from_bson`](from_bson.md) - create a JSON value from an input in BSON format
- [`from_ubjson`](from_ubjson.md) - create a JSON value from an input in UBJSON format
- [`from_bjdata`](from_bjdata.md) - create a JSON value from an input in BJData format
## Version history ## Version history
+11 -7
View File
@@ -108,13 +108,17 @@ Linear in the size of the input.
## See also ## See also
- [BSON specification](http://bsonspec.org/spec.html) - [`BSON`](../../features/binary_formats/bson.md) - the format, its byte layout and how values are mapped
- [to_bson](to_bson.md) for the analogous serialization - [Binary formats](../../features/binary_formats/index.md) - overview and comparison of the supported binary formats
- [from_cbor](from_cbor.md) for the related CBOR format - [Parsing untrusted input](../../features/parsing/untrusted_input.md) - limits and safe handling of hostile data
- [from_msgpack](from_msgpack.md) for the related MessagePack format - [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled
- [from_ubjson](from_ubjson.md) for the related UBJSON format - [BSON specification](http://bsonspec.org/spec.html) - specification of the BSON format
- [from_bjdata](from_bjdata.md) for the related BJData format - [`to_bson`](to_bson.md) - the analogous serialization
- [from_bon8](from_bon8.md) for the related BON8 format - [`from_cbor`](from_cbor.md) - the related CBOR format
- [`from_msgpack`](from_msgpack.md) - the related MessagePack format
- [`from_ubjson`](from_ubjson.md) - the related UBJSON format
- [`from_bjdata`](from_bjdata.md) - the related BJData format
- [`from_bon8`](from_bon8.md) - the related BON8 format
## Version history ## Version history
+10 -6
View File
@@ -114,12 +114,16 @@ Linear in the size of the input.
## See also ## See also
- [to_cbor](to_cbor.md) create a CBOR serialization of a JSON value - [`CBOR`](../../features/binary_formats/cbor.md) - the format, its byte layout and how values are mapped
- [from_msgpack](from_msgpack.md) create a JSON value from an input in MessagePack format - [Binary formats](../../features/binary_formats/index.md) - overview and comparison of the supported binary formats
- [from_bson](from_bson.md) create a JSON value from an input in BSON format - [Parsing untrusted input](../../features/parsing/untrusted_input.md) - limits and safe handling of hostile data
- [from_ubjson](from_ubjson.md) create a JSON value from an input in UBJSON format - [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled
- [from_bjdata](from_bjdata.md) create a JSON value from an input in BJData format - [`to_cbor`](to_cbor.md) - create a CBOR serialization of a JSON value
- [from_bon8](from_bon8.md) create a JSON value from an input in BON8 format - [`from_msgpack`](from_msgpack.md) - create a JSON value from an input in MessagePack format
- [`from_bson`](from_bson.md) - create a JSON value from an input in BSON format
- [`from_ubjson`](from_ubjson.md) - create a JSON value from an input in UBJSON format
- [`from_bjdata`](from_bjdata.md) - create a JSON value from an input in BJData format
- [`from_bon8`](from_bon8.md) - create a JSON value from an input in BON8 format
## Version history ## Version history
@@ -107,12 +107,16 @@ Linear in the size of the input.
## See also ## See also
- [to_msgpack](to_msgpack.md) create a MessagePack serialization of a JSON value - [MessagePack](../../features/binary_formats/messagepack.md) - the format, its byte layout and how values are mapped
- [from_cbor](from_cbor.md) create a JSON value from an input in CBOR format - [Binary formats](../../features/binary_formats/index.md) - overview and comparison of the supported binary formats
- [from_bson](from_bson.md) create a JSON value from an input in BSON format - [Parsing untrusted input](../../features/parsing/untrusted_input.md) - limits and safe handling of hostile data
- [from_ubjson](from_ubjson.md) create a JSON value from an input in UBJSON format - [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled
- [from_bjdata](from_bjdata.md) create a JSON value from an input in BJData format - [`to_msgpack`](to_msgpack.md) - create a MessagePack serialization of a JSON value
- [from_bon8](from_bon8.md) create a JSON value from an input in BON8 format - [`from_cbor`](from_cbor.md) - create a JSON value from an input in CBOR format
- [`from_bson`](from_bson.md) - create a JSON value from an input in BSON format
- [`from_ubjson`](from_ubjson.md) - create a JSON value from an input in UBJSON format
- [`from_bjdata`](from_bjdata.md) - create a JSON value from an input in BJData format
- [`from_bon8`](from_bon8.md) - create a JSON value from an input in BON8 format
## Version history ## Version history
+10 -6
View File
@@ -107,12 +107,16 @@ Linear in the size of the input.
## See also ## See also
- [to_ubjson](to_ubjson.md) create a UBJSON serialization of a JSON value - [`UBJSON`](../../features/binary_formats/ubjson.md) - the format, its byte layout and how values are mapped
- [from_cbor](from_cbor.md) create a JSON value from an input in CBOR format - [Binary formats](../../features/binary_formats/index.md) - overview and comparison of the supported binary formats
- [from_msgpack](from_msgpack.md) create a JSON value from an input in MessagePack format - [Parsing untrusted input](../../features/parsing/untrusted_input.md) - limits and safe handling of hostile data
- [from_bson](from_bson.md) create a JSON value from an input in BSON format - [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled
- [from_bjdata](from_bjdata.md) create a JSON value from an input in BJData format - [`to_ubjson`](to_ubjson.md) - create a UBJSON serialization of a JSON value
- [from_bon8](from_bon8.md) create a JSON value from an input in BON8 format - [`from_cbor`](from_cbor.md) - create a JSON value from an input in CBOR format
- [`from_msgpack`](from_msgpack.md) - create a JSON value from an input in MessagePack format
- [`from_bson`](from_bson.md) - create a JSON value from an input in BSON format
- [`from_bjdata`](from_bjdata.md) - create a JSON value from an input in BJData format
- [`from_bon8`](from_bon8.md) - create a JSON value from an input in BON8 format
## Version history ## Version history
+3 -2
View File
@@ -50,9 +50,10 @@ Constant.
## See also ## See also
- [back](back.md) to access the last element - [`back`](back.md) - to access the last element
- [basic_json_view::front](../basic_json_view/front.md) - the same access on a zero-copy view (document order, not - [`basic_json_view::front`](../basic_json_view/front.md) - the same access on a zero-copy view (document order, not
sorted; duplicate keys are visited) sorted; duplicate keys are visited)
- [Element Access](../../features/element_access/index.md) - overview of all ways to access elements
## Version history ## Version history
+6 -5
View File
@@ -178,13 +178,14 @@ overload (3).
## See also ## See also
- [get_to](get_to.md) convert and write into a passed value - [`get_to`](get_to.md) - convert and write into a passed value
- [get_ptr](get_ptr.md) get a pointer to the stored value - [`get_ptr`](get_ptr.md) - get a pointer to the stored value
- [get_ref](get_ref.md) get a reference to the stored value - [`get_ref`](get_ref.md) - get a reference to the stored value
- [operator ValueType](operator_ValueType.md) get a value via implicit conversion - [`operator ValueType`](operator_ValueType.md) - get a value via implicit conversion
- [Converting values](../../features/conversions.md) - the type conversions article - [Converting values](../../features/conversions.md) - the type conversions article
- [basic_json_view::get](../basic_json_view/get.md) - the same conversion on a zero-copy view (many types are - [`basic_json_view::get`](../basic_json_view/get.md) - the same conversion on a zero-copy view (many types are
converted without ever building a `basic_json` value) converted without ever building a `basic_json` value)
- [Arbitrary Type Conversions](../../features/arbitrary_types.md) - make your own types usable with `get`
## Version history ## Version history
@@ -36,7 +36,7 @@ Constant.
## See also ## See also
- [basic_json](index.md#template-parameters) the class template, with `AllocatorType` as one of its template parameters - [`basic_json`](index.md#template-parameters) - the class template, with `AllocatorType` as one of its template parameters
- [Template Parameter Requirements](../../features/types/template_parameters.md#allocatortype) - the requirements for `AllocatorType` - [Template Parameter Requirements](../../features/types/template_parameters.md#allocatortype) - the requirements for `AllocatorType`
## Version history ## Version history
@@ -42,8 +42,11 @@ Constant.
## See also ## See also
- [get](get.md) get a value (explicit conversion) - [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled
- [get_ref](get_ref.md) get a reference to the stored value - [`binary`](binary.md) - create a binary value
- [`is_binary`](is_binary.md) - check whether a value is binary
- [`get`](get.md) - get a value (explicit conversion)
- [`get_ref`](get_ref.md) - get a reference to the stored value
## Version history ## Version history
+2 -1
View File
@@ -86,7 +86,8 @@ Constant.
## See also ## See also
- [get_ref()](get_ref.md) get a reference value - [`get_ref()`](get_ref.md) - get a reference value
- [Converting values](../../features/conversions.md) - getting values out, with or without copying
## Version history ## Version history
+3 -2
View File
@@ -60,9 +60,10 @@ Constant.
## See also ## See also
- [get_ptr()](get_ptr.md) get a pointer value - [`get_ptr()`](get_ptr.md) - get a pointer value
- [basic_json_view::get_string](../basic_json_view/get_string.md) - the closest counterpart on a zero-copy view: a - [`basic_json_view::get_string`](../basic_json_view/get_string.md) - the closest counterpart on a zero-copy view: a
string without a copy, but as a view rather than a reference to a value that must already exist string without a copy, but as a view rather than a reference to a value that must already exist
- [Converting values](../../features/conversions.md) - getting values out, with or without copying
## Version history ## Version history
+5 -4
View File
@@ -68,11 +68,12 @@ Depends on the `json_serializer<ValueType>::from_json()` implementation.
## See also ## See also
- [get](get.md) get a value (explicit conversion) - [`get`](get.md) - get a value (explicit conversion)
- [get_ref](get_ref.md) get a reference to the stored value - [`get_ref`](get_ref.md) - get a reference to the stored value
- [get_ptr](get_ptr.md) get a pointer to the stored value - [`get_ptr`](get_ptr.md) - get a pointer to the stored value
- [Converting values](../../features/conversions.md) - the type conversions article - [Converting values](../../features/conversions.md) - the type conversions article
- [basic_json_view::get_to](../basic_json_view/get_to.md) - the same conversion on a zero-copy view - [`basic_json_view::get_to`](../basic_json_view/get_to.md) - the same conversion on a zero-copy view
- [Arbitrary Type Conversions](../../features/arbitrary_types.md) - make your own types usable with `get_to`
## Version history ## Version history
+9 -4
View File
@@ -188,7 +188,7 @@ The class satisfies the following concept requirements:
Functions to inspect the type of a JSON value. Functions to inspect the type of a JSON value.
- [**type**](type.md) - return the type of the JSON value - [**type**](type.md) - return the type of the JSON value
- [**operator value_t**](operator_value_t.md) - return the type of the JSON value - [`operator value_t`](operator_value_t.md) - return the type of the JSON value
- [**type_name**](type_name.md) - return the type as string - [**type_name**](type_name.md) - return the type as string
- [**is_primitive**](is_primitive.md) - return whether the type is primitive - [**is_primitive**](is_primitive.md) - return whether the type is primitive
- [**is_structured**](is_structured.md) - return whether the type is structured - [**is_structured**](is_structured.md) - return whether the type is structured
@@ -217,7 +217,7 @@ Direct access to the stored value of a JSON value.
- [**get_to**](get_to.md) - get a value and write it to a destination - [**get_to**](get_to.md) - get a value and write it to a destination
- [**get_ptr**](get_ptr.md) - get a pointer value - [**get_ptr**](get_ptr.md) - get a pointer value
- [**get_ref**](get_ref.md) - get a reference value - [**get_ref**](get_ref.md) - get a reference value
- [**operator ValueType**](operator_ValueType.md) - get a value - [`operator ValueType`](operator_ValueType.md) - get a value
- [**get_binary**](get_binary.md) - get a binary value - [**get_binary**](get_binary.md) - get a binary value
- [**as_base_class**](as_base_class.md) - access the custom base class - [**as_base_class**](as_base_class.md) - access the custom base class
@@ -358,10 +358,15 @@ Access to the JSON value
## See also ## See also
- [RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format](https://tools.ietf.org/html/rfc8259) - [RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format](https://tools.ietf.org/html/rfc8259) -
- [basic_json_document](../basic_json_document/index.md) / [basic_json_view](../basic_json_view/index.md) - parse a JSON specification of the JSON data interchange format
- [`basic_json_document`](../basic_json_document/index.md) - / [`basic_json_view`](../basic_json_view/index.md) - parse a JSON
text into a flat index and read it through a view text into a flat index and read it through a view
- [Zero-copy JSON views](../../features/json_view.md) - when to use a document and a view instead of a `basic_json` - [Zero-copy JSON views](../../features/json_view.md) - when to use a document and a view instead of a `basic_json`
- [Types](../../features/types/index.md) - how JSON values are stored and which types exist
- [Converting values](../../features/conversions.md) - get values out of a JSON value and put values in
- [Creating JSON values](../../features/creating_values.md) - all the ways to build a JSON value
- [Arbitrary Type Conversions](../../features/arbitrary_types.md) - convert your own types to and from JSON
## Version history ## Version history
@@ -53,8 +53,9 @@ bon8
## See also ## See also
- [sax_parse](sax_parse.md) generic SAX parse interface, taking an `input_format_t` to select the input format - [`sax_parse`](sax_parse.md) - generic SAX parse interface, taking an `input_format_t` to select the input format
- [cbor_tag_handler_t](cbor_tag_handler_t.md) configures how CBOR tags are treated while parsing - [`cbor_tag_handler_t`](cbor_tag_handler_t.md) - configures how CBOR tags are treated while parsing
- [Binary Formats](../../features/binary_formats/index.md) - CBOR, MessagePack, BSON, and other formats
## Version history ## Version history
+5 -4
View File
@@ -185,10 +185,11 @@ Strong exception safety: if an exception occurs, the original value stays intact
## See also ## See also
- [emplace](emplace.md) add a value to an object - [`emplace`](emplace.md) - add a value to an object
- [emplace_back](emplace_back.md) add a value to an array - [`emplace_back`](emplace_back.md) - add a value to an array
- [push_back](push_back.md) add a value to an array/object - [`push_back`](push_back.md) - add a value to an array/object
- [update](update.md) merges objects - [`update`](update.md) - merges objects
- [Modifying values](../../features/modifying_values.md) - the article on modifying values
## Version history ## Version history
@@ -40,6 +40,9 @@ classDiagram
style json_invalid_iterator fill:#CCCCFF style json_invalid_iterator fill:#CCCCFF
``` ```
<p class="nj-caption" markdown>Class hierarchy of the library's exceptions; arrows point from a derived class to its
base class, and the highlighted box is `basic_json::invalid_iterator`.</p>
## Member functions ## Member functions
- **what** - returns explanatory string - **what** - returns explanatory string
@@ -66,12 +69,14 @@ classDiagram
## See also ## See also
- [`exception`](exception.md) for the base class of all exceptions thrown by the library - [`exception`](exception.md) - the base class of all exceptions thrown by the library
- [List of iterator errors](../../home/exceptions.md#iterator-errors) - [List of iterator errors](../../home/exceptions.md#iterator-errors) - overview of iterator errors (`invalid_iterator`)
- [`parse_error`](parse_error.md) for exceptions indicating a parse error - [`parse_error`](parse_error.md) - exceptions indicating a parse error
- [`type_error`](type_error.md) for exceptions indicating executing a member function with a wrong type - [`type_error`](type_error.md) - exceptions indicating executing a member function with a wrong type
- [`out_of_range`](out_of_range.md) for exceptions indicating access out of the defined range - [`out_of_range`](out_of_range.md) - exceptions indicating access out of the defined range
- [`other_error`](other_error.md) for exceptions indicating other library errors - [`other_error`](other_error.md) - exceptions indicating other library errors
- [Exceptions](../../home/exceptions.md) - all exceptions and their error codes
- [`JSON_DIAGNOSTICS`](../macros/json_diagnostics.md) - extended exception messages with the path of the failing value
## Version history ## Version history
+6 -5
View File
@@ -36,11 +36,12 @@ Constant.
## See also ## See also
- [is_object](is_object.md) checks whether the JSON value is an object - [`is_object`](is_object.md) - checks whether the JSON value is an object
- [is_structured](is_structured.md) checks whether the JSON value is structured (array or object) - [`is_structured`](is_structured.md) - checks whether the JSON value is structured (array or object)
- [type](type.md) returns the type of the JSON value - [`type`](type.md) - returns the type of the JSON value
- [array_t](array_t.md) the type used to store JSON arrays - [`array_t`](array_t.md) - the type used to store JSON arrays
- [basic_json_view::is_array](../basic_json_view/is_array.md) - the same check on a zero-copy view - [`basic_json_view::is_array`](../basic_json_view/is_array.md) - the same check on a zero-copy view
- [Types](../../features/types/index.md) - the JSON value types and how they are stored
## Version history ## Version history
+5 -4
View File
@@ -36,10 +36,11 @@ Constant.
## See also ## See also
- [is_primitive](is_primitive.md) checks whether the JSON value is primitive - [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled
- [binary_t](binary_t.md) the type used to store binary values - [`is_primitive`](is_primitive.md) - checks whether the JSON value is primitive
- [get_binary](get_binary.md) returns a reference to the stored binary value - [`binary_t`](binary_t.md) - the type used to store binary values
- [basic_json_view::is_binary](../basic_json_view/is_binary.md) - the same check on a zero-copy view - [`get_binary`](get_binary.md) - returns a reference to the stored binary value
- [`basic_json_view::is_binary`](../basic_json_view/is_binary.md) - the same check on a zero-copy view
## Version history ## Version history
@@ -36,9 +36,10 @@ Constant.
## See also ## See also
- [boolean_t](boolean_t.md) the type used to store JSON booleans - [`boolean_t`](boolean_t.md) - the type used to store JSON booleans
- [is_primitive](is_primitive.md) checks whether the JSON value is primitive - [`is_primitive`](is_primitive.md) - checks whether the JSON value is primitive
- [basic_json_view::is_boolean](../basic_json_view/is_boolean.md) - the same check on a zero-copy view - [`basic_json_view::is_boolean`](../basic_json_view/is_boolean.md) - the same check on a zero-copy view
- [Types](../../features/types/index.md) - the JSON value types and how they are stored
## Version history ## Version history
@@ -87,8 +87,9 @@ with `allow_exceptions` set to `#!cpp false`: a parse error then yields a discar
## See also ## See also
- [basic_json_view::is_discarded](../basic_json_view/is_discarded.md) - the corresponding check on a zero-copy view, - [`basic_json_view::is_discarded`](../basic_json_view/is_discarded.md) - the corresponding check on a zero-copy view,
which is `#!cpp true` if the view refers to no value which is `#!cpp true` if the view refers to no value
- [Types](../../features/types/index.md) - the JSON value types and how they are stored
## Version history ## Version history
+6 -5
View File
@@ -36,11 +36,12 @@ Constant.
## See also ## See also
- [is_array](is_array.md) checks whether the JSON value is an array - [`is_array`](is_array.md) - checks whether the JSON value is an array
- [is_object](is_object.md) checks whether the JSON value is an object - [`is_object`](is_object.md) - checks whether the JSON value is an object
- [type](type.md) returns the type of the JSON value - [`type`](type.md) - returns the type of the JSON value
- [value_t](value_t.md) the enumeration of JSON types - [`value_t`](value_t.md) - the enumeration of JSON types
- [basic_json_view::is_null](../basic_json_view/is_null.md) - the same check on a zero-copy view - [`basic_json_view::is_null`](../basic_json_view/is_null.md) - the same check on a zero-copy view
- [Types](../../features/types/index.md) - the JSON value types and how they are stored
## Version history ## Version history
+6 -4
View File
@@ -46,10 +46,12 @@ constexpr bool is_number() const noexcept
## See also ## See also
- [is_number_integer()](is_number_integer.md) check if the value is an integer or unsigned integer number - [`is_number_integer()`](is_number_integer.md) - check if the value is an integer or unsigned integer number
- [is_number_unsigned()](is_number_unsigned.md) check if the value is an unsigned integer number - [`is_number_unsigned()`](is_number_unsigned.md) - check if the value is an unsigned integer number
- [is_number_float()](is_number_float.md) check if the value is a floating-point number - [`is_number_float()`](is_number_float.md) - check if the value is a floating-point number
- [basic_json_view::is_number](../basic_json_view/is_number.md) - the same check on a zero-copy view - [`basic_json_view::is_number`](../basic_json_view/is_number.md) - the same check on a zero-copy view
- [Types](../../features/types/index.md) - the JSON value types and how they are stored
- [Number Handling](../../features/types/number_handling.md) - how numbers are stored and converted
## Version history ## Version history
@@ -37,10 +37,12 @@ Constant.
## See also ## See also
- [is_number()](is_number.md) check if the value is a number - [`is_number()`](is_number.md) - check if the value is a number
- [is_number_integer()](is_number_integer.md) check if the value is an integer or unsigned integer number - [`is_number_integer()`](is_number_integer.md) - check if the value is an integer or unsigned integer number
- [is_number_unsigned()](is_number_unsigned.md) check if the value is an unsigned integer number - [`is_number_unsigned()`](is_number_unsigned.md) - check if the value is an unsigned integer number
- [basic_json_view::is_number_float](../basic_json_view/is_number_float.md) - the same check on a zero-copy view - [`basic_json_view::is_number_float`](../basic_json_view/is_number_float.md) - the same check on a zero-copy view
- [Types](../../features/types/index.md) - the JSON value types and how they are stored
- [Number Handling](../../features/types/number_handling.md) - how numbers are stored and converted
## Version history ## Version history
@@ -37,10 +37,12 @@ Constant.
## See also ## See also
- [is_number()](is_number.md) check if the value is a number - [`is_number()`](is_number.md) - check if the value is a number
- [is_number_unsigned()](is_number_unsigned.md) check if the value is an unsigned integer number - [`is_number_unsigned()`](is_number_unsigned.md) - check if the value is an unsigned integer number
- [is_number_float()](is_number_float.md) check if the value is a floating-point number - [`is_number_float()`](is_number_float.md) - check if the value is a floating-point number
- [basic_json_view::is_number_integer](../basic_json_view/is_number_integer.md) - the same check on a zero-copy view - [`basic_json_view::is_number_integer`](../basic_json_view/is_number_integer.md) - the same check on a zero-copy view
- [Types](../../features/types/index.md) - the JSON value types and how they are stored
- [Number Handling](../../features/types/number_handling.md) - how numbers are stored and converted
## Version history ## Version history
@@ -40,10 +40,12 @@ Constant.
## See also ## See also
- [is_number()](is_number.md) check if the value is a number - [`is_number()`](is_number.md) - check if the value is a number
- [is_number_integer()](is_number_integer.md) check if the value is an integer or unsigned integer number - [`is_number_integer()`](is_number_integer.md) - check if the value is an integer or unsigned integer number
- [is_number_float()](is_number_float.md) check if the value is a floating-point number - [`is_number_float()`](is_number_float.md) - check if the value is a floating-point number
- [basic_json_view::is_number_unsigned](../basic_json_view/is_number_unsigned.md) - the same check on a zero-copy view - [`basic_json_view::is_number_unsigned`](../basic_json_view/is_number_unsigned.md) - the same check on a zero-copy view
- [Types](../../features/types/index.md) - the JSON value types and how they are stored
- [Number Handling](../../features/types/number_handling.md) - how numbers are stored and converted
## Version history ## Version history
+6 -5
View File
@@ -36,11 +36,12 @@ Constant.
## See also ## See also
- [is_array](is_array.md) checks whether the JSON value is an array - [`is_array`](is_array.md) - checks whether the JSON value is an array
- [is_structured](is_structured.md) checks whether the JSON value is structured (array or object) - [`is_structured`](is_structured.md) - checks whether the JSON value is structured (array or object)
- [type](type.md) returns the type of the JSON value - [`type`](type.md) - returns the type of the JSON value
- [object_t](object_t.md) the type used to store JSON objects - [`object_t`](object_t.md) - the type used to store JSON objects
- [basic_json_view::is_object](../basic_json_view/is_object.md) - the same check on a zero-copy view - [`basic_json_view::is_object`](../basic_json_view/is_object.md) - the same check on a zero-copy view
- [Types](../../features/types/index.md) - the JSON value types and how they are stored
## Version history ## Version history
@@ -56,13 +56,14 @@ This library extends primitive types to binary types, because binary types are r
## See also ## See also
- [is_structured()](is_structured.md) returns whether the JSON value is structured - [`is_structured()`](is_structured.md) - returns whether the JSON value is structured
- [is_null()](is_null.md) returns whether the JSON value is `null` - [`is_null()`](is_null.md) - returns whether the JSON value is `null`
- [is_string()](is_string.md) returns whether the JSON value is a string - [`is_string()`](is_string.md) - returns whether the JSON value is a string
- [is_boolean()](is_boolean.md) returns whether the JSON value is a boolean - [`is_boolean()`](is_boolean.md) - returns whether the JSON value is a boolean
- [is_number()](is_number.md) returns whether the JSON value is a number - [`is_number()`](is_number.md) - returns whether the JSON value is a number
- [is_binary()](is_binary.md) returns whether the JSON value is a binary array - [`is_binary()`](is_binary.md) - returns whether the JSON value is a binary array
- [basic_json_view::is_primitive](../basic_json_view/is_primitive.md) - the same check on a zero-copy view - [`basic_json_view::is_primitive`](../basic_json_view/is_primitive.md) - the same check on a zero-copy view
- [Types](../../features/types/index.md) - the JSON value types and how they are stored
## Version history ## Version history
+5 -4
View File
@@ -36,10 +36,11 @@ Constant.
## See also ## See also
- [is_primitive](is_primitive.md) checks whether the JSON value is primitive - [`is_primitive`](is_primitive.md) - checks whether the JSON value is primitive
- [type](type.md) returns the type of the JSON value - [`type`](type.md) - returns the type of the JSON value
- [string_t](string_t.md) the type used to store JSON strings - [`string_t`](string_t.md) - the type used to store JSON strings
- [basic_json_view::is_string](../basic_json_view/is_string.md) - the same check on a zero-copy view - [`basic_json_view::is_string`](../basic_json_view/is_string.md) - the same check on a zero-copy view
- [Types](../../features/types/index.md) - the JSON value types and how they are stored
## Version history ## Version history
@@ -54,10 +54,11 @@ Note that though strings are containers in C++, they are treated as primitive va
## See also ## See also
- [is_primitive()](is_primitive.md) returns whether JSON value is primitive - [`is_primitive()`](is_primitive.md) - returns whether JSON value is primitive
- [is_array()](is_array.md) returns whether the value is an array - [`is_array()`](is_array.md) - returns whether the value is an array
- [is_object()](is_object.md) returns whether the value is an object - [`is_object()`](is_object.md) - returns whether the value is an object
- [basic_json_view::is_structured](../basic_json_view/is_structured.md) - the same check on a zero-copy view - [`basic_json_view::is_structured`](../basic_json_view/is_structured.md) - the same check on a zero-copy view
- [Types](../../features/types/index.md) - the JSON value types and how they are stored
## Version history ## Version history
+4 -3
View File
@@ -97,10 +97,11 @@ When iterating over an array, `key()` will return the index of the element as st
## See also ## See also
- [begin](begin.md) returns an iterator to the first element - [`begin`](begin.md) - returns an iterator to the first element
- [end](end.md) returns an iterator to one past the last element - [`end`](end.md) - returns an iterator to one past the last element
- [basic_json_view::items](../basic_json_view/items.md) - the same range on a zero-copy view (`#!cpp const auto`, - [`basic_json_view::items`](../basic_json_view/items.md) - the same range on a zero-copy view (`#!cpp const auto`,
not `#!cpp const auto&`: items are produced on the fly; document order, not sorted; duplicate keys are visited) not `#!cpp const auto&`: items are produced on the fly; document order, not sorted; duplicate keys are visited)
- [Iterators](../../features/iterators.md#access-object-keys-during-iteration) - the article on iterating over keys and values
## Version history ## Version history
@@ -57,7 +57,7 @@ same name. Hidden members remain accessible via [`as_base_class`](as_base_class.
## See also ## See also
- [as_base_class](as_base_class.md) - access the custom base class - [`as_base_class`](as_base_class.md) - access the custom base class
- [Template Parameter Requirements](../../features/types/template_parameters.md#custombaseclass) - the requirements for `CustomBaseClass` - [Template Parameter Requirements](../../features/types/template_parameters.md#custombaseclass) - the requirements for `CustomBaseClass`
## Version history ## Version history
@@ -44,10 +44,11 @@ deserializes. See [Template Parameter Requirements](../../features/types/templat
## See also ## See also
- [adl_serializer](../adl_serializer/index.md) the default `json_serializer` - [`adl_serializer`](../adl_serializer/index.md) - the default `json_serializer`
- [get](get.md) explicit type conversion using the `json_serializer`'s `from_json()` method - [`get`](get.md) - explicit type conversion using the `json_serializer`'s `from_json()` method
- [get_to](get_to.md) explicit type conversion into a variable using the `json_serializer`'s `from_json()` method - [`get_to`](get_to.md) - explicit type conversion into a variable using the `json_serializer`'s `from_json()` method
- [Arbitrary Type Conversions](../../features/arbitrary_types.md) - the article on converting between JSON values and arbitrary types - [Arbitrary Type Conversions](../../features/arbitrary_types.md) - the article on converting between JSON values and arbitrary types
- [Template Parameter Requirements](../../features/types/template_parameters.md) - requirements on the `JSONSerializer` template parameter
## Version history ## Version history
+3 -3
View File
@@ -56,9 +56,9 @@ string elements the JSON value can store which is `1`.
## See also ## See also
- [size](size.md) returns the number of elements - [`size`](size.md) - returns the number of elements
- [array_t](array_t.md) the type used to store JSON arrays - [`array_t`](array_t.md) - the type used to store JSON arrays
- [object_t](object_t.md) the type used to store JSON objects - [`object_t`](object_t.md) - the type used to store JSON objects
## Version history ## Version history
@@ -70,9 +70,10 @@ object operation (looking up a key, or adding one to the patch): logarithmic for
## See also ## See also
- [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396) - [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396) - specification of JSON Merge Patch
- [merge_patch](merge_patch.md) applies a JSON Merge Patch - [`merge_patch`](merge_patch.md) - applies a JSON Merge Patch
- [diff](diff.md) creates a diff as a JSON Patch - [`diff`](diff.md) - creates a diff as a JSON Patch
- [JSON Merge Patch](../../features/merge_patch.md) - the article on JSON Merge Patch
## Version history ## Version history
@@ -65,9 +65,10 @@ returned by `#!cpp (*this)[key]`); it is read as it was when `merge_patch()` was
## See also ## See also
- [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396) - [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396) - specification of JSON Merge Patch
- [patch](patch.md) apply a JSON patch - [`patch`](patch.md) - apply a JSON patch
- [merge_diff](merge_diff.md) creates a diff as a JSON Merge Patch - [`merge_diff`](merge_diff.md) - creates a diff as a JSON Merge Patch
- [JSON Merge Patch](../../features/merge_patch.md) - the article on JSON Merge Patch
## Version history ## Version history
+5 -2
View File
@@ -48,8 +48,11 @@ Constant.
## See also ## See also
- [**NLOHMANN_JSON_VERSION_MAJOR**/**NLOHMANN_JSON_VERSION_MINOR**/**NLOHMANN_JSON_VERSION_PATCH**](../macros/nlohmann_json_version_major.md) - [`NLOHMANN_JSON_VERSION_MAJOR`](../macros/nlohmann_json_version_major.md) /
\- library version information [`NLOHMANN_JSON_VERSION_MINOR`](../macros/nlohmann_json_version_major.md) /
[`NLOHMANN_JSON_VERSION_PATCH`](../macros/nlohmann_json_version_major.md) - library version information
- [Integration](../../integration/index.md) - integrate the library
- [Supported Macros](../../features/macros.md) - guide to all supported macros
## Version history ## Version history
@@ -84,10 +84,11 @@ Floating-point number values are stored directly inside a `basic_json` type.
## See also ## See also
- [number_integer_t](number_integer_t.md) the type used to store JSON integer numbers - [`number_integer_t`](number_integer_t.md) - the type used to store JSON integer numbers
- [number_unsigned_t](number_unsigned_t.md) the type used to store JSON unsigned integer numbers - [`number_unsigned_t`](number_unsigned_t.md) - the type used to store JSON unsigned integer numbers
- [is_number_float](is_number_float.md) checks whether the JSON value is a floating-point number - [`is_number_float`](is_number_float.md) - checks whether the JSON value is a floating-point number
- [Number Handling](../../features/types/number_handling.md) - the article on number handling - [Number Handling](../../features/types/number_handling.md) - the article on number handling
- [Template Parameter Requirements](../../features/types/template_parameters.md) - requirements on the number template parameters
## Version history ## Version history
@@ -80,10 +80,11 @@ Integer number values are stored directly inside a `basic_json` type.
## See also ## See also
- [number_unsigned_t](number_unsigned_t.md) the type used to store JSON unsigned integer numbers - [`number_unsigned_t`](number_unsigned_t.md) - the type used to store JSON unsigned integer numbers
- [number_float_t](number_float_t.md) the type used to store JSON floating-point numbers - [`number_float_t`](number_float_t.md) - the type used to store JSON floating-point numbers
- [is_number_integer](is_number_integer.md) checks whether the JSON value is a signed integer number - [`is_number_integer`](is_number_integer.md) - checks whether the JSON value is a signed integer number
- [Number Handling](../../features/types/number_handling.md) - the article on number handling - [Number Handling](../../features/types/number_handling.md) - the article on number handling
- [Template Parameter Requirements](../../features/types/template_parameters.md) - requirements on the number template parameters
## Version history ## Version history
@@ -82,10 +82,11 @@ Integer number values are stored directly inside a `basic_json` type.
## See also ## See also
- [number_integer_t](number_integer_t.md) the type used to store JSON integer numbers - [`number_integer_t`](number_integer_t.md) - the type used to store JSON integer numbers
- [number_float_t](number_float_t.md) the type used to store JSON floating-point numbers - [`number_float_t`](number_float_t.md) - the type used to store JSON floating-point numbers
- [is_number_unsigned](is_number_unsigned.md) checks whether the JSON value is an unsigned integer number - [`is_number_unsigned`](is_number_unsigned.md) - checks whether the JSON value is an unsigned integer number
- [Number Handling](../../features/types/number_handling.md) - the article on number handling - [Number Handling](../../features/types/number_handling.md) - the article on number handling
- [Template Parameter Requirements](../../features/types/template_parameters.md) - requirements on the number template parameters
## Version history ## Version history
@@ -27,8 +27,10 @@ and [`default_object_comparator_t`](default_object_comparator_t.md) otherwise.
## See also ## See also
- [object_t](object_t.md) the type used to store JSON objects - [`object_t`](object_t.md) - the type used to store JSON objects
- [default_object_comparator_t](default_object_comparator_t.md) the fallback comparator used when `object_t` has no `key_compare` member type - [`default_object_comparator_t`](default_object_comparator_t.md) - the fallback comparator used when `object_t` has no `key_compare` member type
- [Template Parameter Requirements](../../features/types/template_parameters.md) - requirements on the `ObjectType` template parameter
- [Object order](../../features/object_order.md) - preserve the insertion order of keys
## Version history ## Version history
+5 -3
View File
@@ -125,10 +125,12 @@ the object is silently converted as an array of key-value pairs, which is incorr
## See also ## See also
- [array_t](array_t.md) the type used to store JSON arrays - [`array_t`](array_t.md) - the type used to store JSON arrays
- [string_t](string_t.md) the type used to store JSON strings - [`string_t`](string_t.md) - the type used to store JSON strings
- [object_comparator_t](object_comparator_t.md) the comparator used to order object keys - [`object_comparator_t`](object_comparator_t.md) - the comparator used to order object keys
- [Object Order](../../features/object_order.md) - the article on object key ordering - [Object Order](../../features/object_order.md) - the article on object key ordering
- [Types](../../features/types/index.md) - how objects are stored
- [Template Parameter Requirements](../../features/types/template_parameters.md) - requirements on the `ObjectType` template parameter
## Version history ## Version history
@@ -123,8 +123,9 @@ interpreted as `object_t::value_type` or `std::initializer_list<basic_json>`, se
## See also ## See also
- [emplace_back](emplace_back.md) add a value to an array - [`emplace_back`](emplace_back.md) - add a value to an array
- [push_back](push_back.md) add a value to an array/object - [`push_back`](push_back.md) - add a value to an array/object
- [Modifying values](../../features/modifying_values.md) - the article on modifying values
## Version history ## Version history
+3 -2
View File
@@ -45,8 +45,9 @@ Linear.
## See also ## See also
- [basic_json](basic_json.md) create a JSON value - [`basic_json`](basic_json.md) - create a JSON value
- [swap](swap.md) exchanges the contents of two JSON values - [`swap`](swap.md) - exchanges the contents of two JSON values
- [Creating JSON values](../../features/creating_values.md) - ways to create and assign JSON values
## Version history ## Version history
@@ -271,13 +271,15 @@ Strong exception safety: if an exception occurs, the original value stays intact
## See also ## See also
- documentation on [unchecked access](../../features/element_access/unchecked_access.md) - [Unchecked access](../../features/element_access/unchecked_access.md) - element access without range checking
- documentation on [runtime assertions](../../features/assertions.md) - [Runtime assertions](../../features/assertions.md) - assertions guarding against undefined behavior
- see [`at`](at.md) for access by reference with range checking - [`at`](at.md) - access by reference with range checking
- see [`value`](value.md) for access with default value - [`value`](value.md) - access with default value
- [basic_json_view::operator[]](../basic_json_view/operator%5B%5D.md) - the same access on a zero-copy view (a duplicate - [`basic_json_view::operator[]`](../basic_json_view/operator%5B%5D.md) - the same access on a zero-copy view (a duplicate
key resolves to the first member, whereas `parse()` keeps the last; a missing key gives a discarded view instead of key resolves to the first member, whereas `parse()` keeps the last; a missing key gives a discarded view instead of
undefined behavior) undefined behavior)
- [Element Access](../../features/element_access/index.md) - overview of all ways to access elements
- [JSON Pointer](../../features/json_pointer.md) - access nested values with a pointer
## Version history ## Version history
@@ -84,7 +84,7 @@ Linear in the size of the JSON value.
## See also ## See also
- [get](get.md) get a value (explicit conversion) - [`get`](get.md) - get a value (explicit conversion)
- [Converting values](../../features/conversions.md) - the type conversions article - [Converting values](../../features/conversions.md) - the type conversions article
## Version history ## Version history
@@ -168,9 +168,9 @@ Linear.
## See also ## See also
- [operator!=](operator_ne.md) compare for inequality - [`operator!=`](operator_ne.md) - compare for inequality
- [operator<=>](operator_spaceship.md) comparison: 3-way (C++20) - [`operator<=>`](operator_spaceship.md) - comparison: 3-way (C++20)
- [basic_json_view::operator==](../basic_json_view/operator_eq.md) - the same comparison on a zero-copy view, without - [`basic_json_view::operator==`](../basic_json_view/operator_eq.md) - the same comparison on a zero-copy view, without
building a `basic_json` value for it building a `basic_json` value for it
## Version history ## Version history
@@ -93,7 +93,7 @@ Linear.
## See also ## See also
- [**operator<=>**](operator_spaceship.md) comparison: 3-way - [`operator<=>`](operator_spaceship.md) - comparison: 3-way
## Version history ## Version history
@@ -83,7 +83,7 @@ Linear.
## See also ## See also
- [**operator<=>**](operator_spaceship.md) comparison: 3-way - [`operator<=>`](operator_spaceship.md) - comparison: 3-way
## Version history ## Version history
@@ -94,7 +94,7 @@ Linear.
## See also ## See also
- [**operator<=>**](operator_spaceship.md) comparison: 3-way - [`operator<=>`](operator_spaceship.md) - comparison: 3-way
## Version history ## Version history
@@ -94,7 +94,7 @@ Linear.
## See also ## See also
- [**operator<=>**](operator_spaceship.md) comparison: 3-way - [`operator<=>`](operator_spaceship.md) - comparison: 3-way
## Version history ## Version history
@@ -93,9 +93,9 @@ Linear.
## See also ## See also
- [operator==](operator_eq.md) comparison: equal - [`operator==`](operator_eq.md) - comparison: equal
- [operator<=>](operator_spaceship.md) comparison: 3-way (C++20) - [`operator<=>`](operator_spaceship.md) - comparison: 3-way (C++20)
- [basic_json_view::operator!=](../basic_json_view/operator_ne.md) - the same comparison on a zero-copy view, without - [`basic_json_view::operator!=`](../basic_json_view/operator_ne.md) - the same comparison on a zero-copy view, without
building a `basic_json` value for it building a `basic_json` value for it
## Version history ## Version history
@@ -88,12 +88,12 @@ Linear.
## See also ## See also
- [**operator==**](operator_eq.md) - comparison: equal - [`operator==`](operator_eq.md) - comparison: equal
- [**operator!=**](operator_ne.md) - comparison: not equal - [`operator!=`](operator_ne.md) - comparison: not equal
- [**operator<**](operator_lt.md) - comparison: less than - [`operator<`](operator_lt.md) - comparison: less than
- [**operator<=**](operator_le.md) - comparison: less than or equal - [`operator<=`](operator_le.md) - comparison: less than or equal
- [**operator>**](operator_gt.md) - comparison: greater than - [`operator>`](operator_gt.md) - comparison: greater than
- [**operator>=**](operator_ge.md) - comparison: greater than or equal - [`operator>=`](operator_ge.md) - comparison: greater than or equal
## Version history ## Version history
@@ -49,8 +49,9 @@ Constant.
## See also ## See also
- [type](type.md) named member function equivalent to this implicit conversion operator - [`type`](type.md) - named member function equivalent to this implicit conversion operator
- [value_t](value_t.md) the enumeration of JSON types - [`value_t`](value_t.md) - the enumeration of JSON types
- [Types](../../features/types/index.md) - the JSON value types
## Version history ## Version history
+11 -6
View File
@@ -40,6 +40,9 @@ classDiagram
style json_other_error fill:#CCCCFF style json_other_error fill:#CCCCFF
``` ```
<p class="nj-caption" markdown>Class hierarchy of the library's exceptions; arrows point from a derived class to its
base class, and the highlighted box is `basic_json::other_error`.</p>
## Member functions ## Member functions
- **what** - returns explanatory string - **what** - returns explanatory string
@@ -66,12 +69,14 @@ classDiagram
## See also ## See also
- [`exception`](exception.md) for the base class of all exceptions thrown by the library - [`exception`](exception.md) - the base class of all exceptions thrown by the library
- [List of other errors](../../home/exceptions.md#further-exceptions) - [List of other errors](../../home/exceptions.md#further-exceptions) - overview of further errors (`other_error`)
- [`parse_error`](parse_error.md) for exceptions indicating a parse error - [`parse_error`](parse_error.md) - exceptions indicating a parse error
- [`invalid_iterator`](invalid_iterator.md) for exceptions indicating errors with iterators - [`invalid_iterator`](invalid_iterator.md) - exceptions indicating errors with iterators
- [`type_error`](type_error.md) for exceptions indicating executing a member function with a wrong type - [`type_error`](type_error.md) - exceptions indicating executing a member function with a wrong type
- [`out_of_range`](out_of_range.md) for exceptions indicating access out of the defined range - [`out_of_range`](out_of_range.md) - exceptions indicating access out of the defined range
- [Exceptions](../../home/exceptions.md) - all exceptions and their error codes
- [`JSON_DIAGNOSTICS`](../macros/json_diagnostics.md) - extended exception messages with the path of the failing value
## Version history ## Version history
@@ -41,6 +41,9 @@ classDiagram
style json_out_of_range fill:#CCCCFF style json_out_of_range fill:#CCCCFF
``` ```
<p class="nj-caption" markdown>Class hierarchy of the library's exceptions; arrows point from a derived class to its
base class, and the highlighted box is `basic_json::out_of_range`.</p>
## Member functions ## Member functions
- **what** - returns explanatory string - **what** - returns explanatory string
@@ -67,12 +70,15 @@ classDiagram
## See also ## See also
- [`exception`](exception.md) for the base class of all exceptions thrown by the library - [`exception`](exception.md) - the base class of all exceptions thrown by the library
- [List of out-of-range errors](../../home/exceptions.md#out-of-range) - [List of out-of-range errors](../../home/exceptions.md#out-of-range) - overview of out-of-range errors
- [`parse_error`](parse_error.md) for exceptions indicating a parse error (`out_of_range`)
- [`invalid_iterator`](invalid_iterator.md) for exceptions indicating errors with iterators - [`parse_error`](parse_error.md) - exceptions indicating a parse error
- [`type_error`](type_error.md) for exceptions indicating executing a member function with a wrong type - [`invalid_iterator`](invalid_iterator.md) - exceptions indicating errors with iterators
- [`other_error`](other_error.md) for exceptions indicating other library errors - [`type_error`](type_error.md) - exceptions indicating executing a member function with a wrong type
- [`other_error`](other_error.md) - exceptions indicating other library errors
- [Exceptions](../../home/exceptions.md) - all exceptions and their error codes
- [`JSON_DIAGNOSTICS`](../macros/json_diagnostics.md) - extended exception messages with the path of the failing value
## Version history ## Version history
+9 -3
View File
@@ -282,15 +282,21 @@ outside of a string, invalid) byte; see the [FAQ entry](../../home/faq.md#nul-by
## See also ## See also
- [accept](accept.md) - check if the input is valid JSON - [`accept`](accept.md) - check if the input is valid JSON
- [sax_parse](sax_parse.md) - parse input using the SAX interface - [`sax_parse`](sax_parse.md) - parse input using the SAX interface
- [operator>>](../operator_gtgt.md) - deserialize from stream - [`operator>>`](../operator_gtgt.md) - deserialize from stream
- [`JSON_STRICT_NUL_HANDLING`](../macros/json_strict_nul_handling.md) - opt in to rejecting a NUL byte in the input - [`JSON_STRICT_NUL_HANDLING`](../macros/json_strict_nul_handling.md) - opt in to rejecting a NUL byte in the input
instead of treating it as end of input instead of treating it as end of input
- [`JSON_DISABLE_STREAM_BULK_SCAN`](../macros/json_disable_stream_bulk_scan.md) - read a `std::istream` one character - [`JSON_DISABLE_STREAM_BULK_SCAN`](../macros/json_disable_stream_bulk_scan.md) - read a `std::istream` one character
at a time at a time
- [`JSON_DISABLE_UNLOCKED_FILE_IO`](../macros/json_disable_unlocked_file_io.md) - read a `FILE*` with the locking stdio - [`JSON_DISABLE_UNLOCKED_FILE_IO`](../macros/json_disable_unlocked_file_io.md) - read a `FILE*` with the locking stdio
functions functions
- [Parsing](../../features/parsing/index.md) - overview of the parsing functions
- [Comments](../../features/comments.md) - ignore `//` and `/* */` comments while parsing
- [Trailing Commas](../../features/trailing_commas.md) - accept trailing commas in arrays and objects
- [Parser Callbacks](../../features/parsing/parser_callbacks.md) - filter or inspect values while parsing
- [Parsing and Exceptions](../../features/parsing/parse_exceptions.md) - handling parse errors and locating them in the input
- [Parsing Untrusted Input](../../features/parsing/untrusted_input.md) - limits and checks for input you do not control
## Version history ## Version history
+11 -6
View File
@@ -43,6 +43,9 @@ classDiagram
style json_parse_error fill:#CCCCFF style json_parse_error fill:#CCCCFF
``` ```
<p class="nj-caption" markdown>Class hierarchy of the library's exceptions; arrows point from a derived class to its
base class, and the highlighted box is `basic_json::parse_error`.</p>
## Member functions ## Member functions
- **what** - returns explanatory string - **what** - returns explanatory string
@@ -75,12 +78,14 @@ or the end of file. This also holds true when reading a byte vector for binary f
## See also ## See also
- [`exception`](exception.md) for the base class of all exceptions thrown by the library - [`exception`](exception.md) - the base class of all exceptions thrown by the library
- [List of parse errors](../../home/exceptions.md#parse-errors) - [List of parse errors](../../home/exceptions.md#parse-errors) - overview of parse errors (`parse_error`)
- [`invalid_iterator`](invalid_iterator.md) for exceptions indicating errors with iterators - [`invalid_iterator`](invalid_iterator.md) - exceptions indicating errors with iterators
- [`type_error`](type_error.md) for exceptions indicating executing a member function with a wrong type - [`type_error`](type_error.md) - exceptions indicating executing a member function with a wrong type
- [`out_of_range`](out_of_range.md) for exceptions indicating access out of the defined range - [`out_of_range`](out_of_range.md) - exceptions indicating access out of the defined range
- [`other_error`](other_error.md) for exceptions indicating other library errors - [`other_error`](other_error.md) - exceptions indicating other library errors
- [Parsing and Exceptions](../../features/parsing/parse_exceptions.md) - handling parse errors and locating them in the input
- [Working Without Exceptions](../../features/no_exceptions.md) - error handling when exceptions are disabled
## Version history ## Version history
@@ -22,7 +22,12 @@ The parser callback distinguishes the following events:
## Examples ## Examples
![Example when certain parse events are triggered](../../images/callback_events.png) <div class="nj-fig-wrap" markdown>
--8<-- "images/callback_events.svg"
</div>
<p class="nj-caption" markdown>Each coloured dot marks where the parser reports a `parse_event_t` event while reading
the JSON text on the left; the legend on the right names the event per colour.</p>
??? example ??? example
@@ -41,8 +46,9 @@ The parser callback distinguishes the following events:
## See also ## See also
- [parser_callback_t](parser_callback_t.md) callback function type for the parser - [`parser_callback_t`](parser_callback_t.md) - callback function type for the parser
- [parse](parse.md) deserialize from a compatible input - [`parse`](parse.md) - deserialize from a compatible input
- [Parser Callbacks](../../features/parsing/parser_callbacks.md) - filter or inspect values while parsing
## Version history ## Version history
@@ -23,7 +23,12 @@ table describes the values of the parameters `depth`, `event`, and `parsed`.
| `parse_event_t::array_end` | the parser read `]` and finished processing a JSON array | depth of the parent of the JSON array | the parsed JSON array | | `parse_event_t::array_end` | the parser read `]` and finished processing a JSON array | depth of the parent of the JSON array | the parsed JSON array |
| `parse_event_t::value` | the parser finished reading a JSON value | depth of the value | the parsed JSON value | | `parse_event_t::value` | the parser finished reading a JSON value | depth of the value | the parsed JSON value |
![Example when certain parse events are triggered](../../images/callback_events.png) <div class="nj-fig-wrap" markdown>
--8<-- "images/callback_events.svg"
</div>
<p class="nj-caption" markdown>Parse events for a small JSON text: each coloured dot marks the position at which the
parser calls the callback, and the legend on the right names the event per colour.</p>
Discarding a value (i.e., returning `#!cpp false`) has different effects depending on the context in which function was Discarding a value (i.e., returning `#!cpp false`) has different effects depending on the context in which function was
called: called:
@@ -92,8 +97,9 @@ the latter case, it is skipped completely, or replaced by `null` if it is the to
## See also ## See also
- [parse](parse.md) deserialize from a compatible input - [`parse`](parse.md) - deserialize from a compatible input
- [parse_event_t](parse_event_t.md) enumeration of parser events - [`parse_event_t`](parse_event_t.md) - enumeration of parser events
- [Parser Callbacks](../../features/parsing/parser_callbacks.md) - filter or inspect values while parsing
## Version history ## Version history
+6 -4
View File
@@ -98,10 +98,12 @@ is thrown. In any case, the original value is not changed: the patch is applied
## See also ## See also
- [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) - [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) - specification of JSON Patch
- [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901) - [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901) - specification of JSON Pointer
- [patch_inplace](patch_inplace.md) applies a JSON Patch without creating a copy of the document - [`patch_inplace`](patch_inplace.md) - applies a JSON Patch without creating a copy of the document
- [merge_patch](merge_patch.md) applies a JSON Merge Patch - [`merge_patch`](merge_patch.md) - applies a JSON Merge Patch
- [JSON Patch and Diff](../../features/json_patch.md) - the article on JSON Patch
- [JSON Pointer](../../features/json_pointer.md) - the addressing scheme used for patch paths
## Version history ## Version history
@@ -96,10 +96,11 @@ function throws an exception.
## See also ## See also
- [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) - [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) - specification of JSON Patch
- [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901) - [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901) - specification of JSON Pointer
- [patch](patch.md) applies a JSON Patch - [`patch`](patch.md) - applies a JSON Patch
- [merge_patch](merge_patch.md) applies a JSON Merge Patch - [`merge_patch`](merge_patch.md) - applies a JSON Merge Patch
- [JSON Patch and Diff](../../features/json_patch.md) - the article on JSON Patch
## Version history ## Version history
+2 -2
View File
@@ -119,8 +119,8 @@ throws.
## See also ## See also
- [emplace_back](emplace_back.md) add a value to an array - [`emplace_back`](emplace_back.md) - add a value to an array
- [operator+=](operator+=.md) add a value to an array/object - [`operator+=`](operator+=.md) - add a value to an array/object
- [Modifying values](../../features/modifying_values.md) - the article on modifying values - [Modifying values](../../features/modifying_values.md) - the article on modifying values
## Version history ## Version history
+10 -4
View File
@@ -7,7 +7,13 @@ const_reverse_iterator rbegin() const noexcept;
Returns an iterator to the reverse-beginning; that is, the last element. Returns an iterator to the reverse-beginning; that is, the last element.
![Illustration from cppreference.com](../../images/range-rbegin-rend.svg) <div class="nj-fig-wrap" markdown>
--8<-- "images/range-rbegin-rend.svg"
</div>
<p class="nj-caption" markdown>`rbegin()` points to the last element and `rend()` to the position before the first
element. The upper row is the reversed sequence and the lower row the forward sequence; dashed arrows link each reverse
iterator to the forward iterator it stores, and dashed cells are past-the-last positions.</p>
## Return value ## Return value
@@ -39,9 +45,9 @@ Constant.
## See also ## See also
- [rend](rend.md) returns a reverse iterator to one before the first element - [`rend`](rend.md) - returns a reverse iterator to one before the first element
- [crbegin](crbegin.md) returns a const reverse iterator to the last element - [`crbegin`](crbegin.md) - returns a const reverse iterator to the last element
- [begin](begin.md) returns an iterator to the first element - [`begin`](begin.md) - returns an iterator to the first element
- [Iterators](../../features/iterators.md) - the article on iterators - [Iterators](../../features/iterators.md) - the article on iterators
## Version history ## Version history
+10 -4
View File
@@ -8,7 +8,13 @@ const_reverse_iterator rend() const noexcept;
Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder,
attempting to access it results in undefined behavior. attempting to access it results in undefined behavior.
![Illustration from cppreference.com](../../images/range-rbegin-rend.svg) <div class="nj-fig-wrap" markdown>
--8<-- "images/range-rbegin-rend.svg"
</div>
<p class="nj-caption" markdown>`rend()` points to the position before the first element and `rbegin()` to the last
element. The upper row is the reversed sequence and the lower row the forward sequence; dashed arrows link each reverse
iterator to the forward iterator it stores, and dashed cells are past-the-last positions.</p>
## Return value ## Return value
@@ -40,9 +46,9 @@ Constant.
## See also ## See also
- [rbegin](rbegin.md) returns a reverse iterator to the last element - [`rbegin`](rbegin.md) - returns a reverse iterator to the last element
- [crend](crend.md) returns a const reverse iterator to one before the first element - [`crend`](crend.md) - returns a const reverse iterator to one before the first element
- [end](end.md) returns an iterator to one past the last element - [`end`](end.md) - returns an iterator to one past the last element
- [Iterators](../../features/iterators.md) - the article on iterators - [Iterators](../../features/iterators.md) - the article on iterators
## Version history ## Version history
Loaded 100 of 416 files, more files were not shown because too many files have changed in this diff. Show more