Compare commits

..
Author SHA1 Message Date
Niels Lohmann 8d30cc24bf json_view: check_utf8 skips well-formed runs with the parser's string scan
Strings of 32 bytes or more that are written into an editable document
are validated with scan_string_run(), which skips well-formed UTF-8 16
bytes at a time; the byte-wise check runs only from where the scan found
ill-formed UTF-8, to report the same type_error.316. Shorter strings
keep the byte-wise check (inlined with a constant start, so that this
path is the code it was), where the vector scan costs more than it
saves.

set()/push_back() of strings of 32 bytes or more take 0.29-0.76 of the
time (x86-64 GCC, averaged over code layouts) and 0.25-0.80 (AArch64
clang); shorter strings take 1.5-4 % fewer instructions; the json_view
rows of bench_edit execute at most 0.04 % more instructions.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-26 07:13:32 +01:00
Niels Lohmann fc3b716675 docs: name the documents the generic view function accepts
Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-26 07:13:31 +01:00
Niels Lohmann f268cab0a3 docs: writing generic code for json_view
A "Writing generic code" section on the json_view page: why a function
taking json_view accepts no other view, the three signatures for
editable, read-only, or either kind of view (passed by value), why the
modes do not convert, is_json_view, and how a from_json() reads views
(constrained to json values and views; the macros and the library's
conversions do it already) with what differs then (duplicate keys,
JSON_DIAGNOSTICS paths).

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-26 07:13:18 +01:00
Niels Lohmann 93ccdc2738 json_view: enable_if_not_view_t instead of '!' in the from_json() templates
astyle spaces out the template argument list when it contains a negation;
the alias spells the condition with negation<> and leaves the lines alone.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-26 07:13:17 +01:00
Niels Lohmann 46b6daec9f json_view: the library's std conversions read views directly
The library's from_json() overloads (containers, maps, std::array, C
arrays, pairs, tuples, optional, valarray, forward_list, enums, binary,
paths, and scalars) accept views: their traits use the view's
basic_json type, and the few accesses that differ (get_ptr) go through
small helpers. from_json() of a view now finds them; only the probe
still looks up by ADL only. get<T>() of a view thus converts these types
without materialize(), with the same values and exceptions; from an
object, a repeated key keeps the last value, as parse() does.

The view keeps its direct paths for vectors of the types it converts
directly (faster than from_json()) and for containers of views; its
other vector and map paths are replaced by from_json(). For basic_json,
std::valarray and std::forward_list are read in one pass (40 % and 3.5 %
fewer instructions); all other conversions are unchanged.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-26 07:12:25 +01:00
Niels Lohmann 6212183c5e json_view: from_json() of the macros reads views directly
get<T>() and get_to() of a view call T's from_json() with the view itself
when that from_json() accepts views but not an unrelated probe type, and
fall back to materialize() otherwise. The from_json() functions of the
NLOHMANN_DEFINE_TYPE_*, NLOHMANN_DEFINE_DERIVED_TYPE_* and
NLOHMANN_JSON_SERIALIZE_ENUM(_STRICT) macros accept basic_json values and
views; a derived type whose base reads only json reads the base part
through materialize(). The library's own from_json() overloads are not
called with views: from_json() of a view (and of the probe) only looks up
functions by ADL.

New public trait nlohmann::is_json_view<T>, and the member type
basic_json_type of basic_json_view. With duplicate keys, the members of
such a T are those the view's lookups find (the first ones).

bench_decode.cpp measures decoding into structs (4-6x faster than
materialize().get<T>() on twitter, citm_catalog, and synthetic records).

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-26 07:12:24 +01:00
Niels Lohmann e6d8a0067b json_view: one SIMD macro set with the library
The view's vector code follows JSON_NO_SIMD, like the lexer and the float
writer, and skips the CPU check of SSSE3 when the code is compiled for
SSSE3 anyway (__SSSE3__), like the lexer. JSON_VIEW_NO_SIMD and
JSON_VIEW_USE_SSSE3 and their ABI tags _vns and _vssse3 are removed; they
were never released. JSON_NO_SIMD keeps its tag _ns.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-26 07:12:16 +01:00
Niels Lohmann 0f2b3ae6d5 json_view: no save() and load() on big-endian targets
The image format is little-endian only. Instead of throwing
type_error.320 at runtime, save_image(), load_image() and the members
save() and load() do not exist on a big-endian target, so a call fails to
compile, like set() on a read-only document. type_error.320 remains for
saving a discarded document.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-26 07:12:15 +01:00
Niels Lohmann 20e022655d json_view: node_kind in the node writers, spell out read_only, comment fixes
The builder and the edit functions take and store a node_kind instead of
casting a value_t; the numbering assertions and the comments now speak of
node_kind, and the link kind notes that it follows value_t::discarded.
The read-only aliases name view_mode::read_only like the editable ones.
view_mode.md says the mode is a compile-time property of the type.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-26 07:12:05 +01:00
Niels Lohmann 266432ea65 json_view: view_mode enum instead of bool Editable, node_kind for node::kind
basic_json_document and basic_json_view take a view_mode (read_only, the
default, or editable) instead of a bool: basic_json_document<json, true>
did not say what true means. The shortcut aliases are unchanged.

The kind of a node is a node_kind (the value_t values plus link, 10 as
before), which removes the static_cast<std::uint8_t>(value_t::...) of
every comparison. The node and image layouts are unchanged.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-25 20:41:47 +01:00
841 changed files with 6339 additions and 17791 deletions

No files matched your search

+7 -36
View File
@@ -1,33 +1,3 @@
# Style or vendor rule sets that do not fit a header-only library:
# altera-*, fuchsia-*, llvmlibc-*, android-cloexec-fopen, boost-use-ranges, llvm-header-guard,
# llvm-include-order, llvm-prefer-static-over-anonymous-namespace, llvm-use-ranges,
# misc-use-anonymous-namespace, google-runtime-float, google-runtime-int, hicpp-signed-bitwise,
# bugprone-signed-bitwise, hicpp-explicit-conversions, google-explicit-constructor,
# cppcoreguidelines-explicit-constructor, misc-explicit-constructor (implicit conversions are the
# API), readability-trailing-comma,
# hicpp-avoid-goto / cppcoreguidelines-avoid-goto, hicpp-no-array-decay,
# hicpp-uppercase-literal-suffix, readability-uppercase-literal-suffix, modernize-use-trailing-return-type.
# Constructs the library needs on purpose (the library supports C++11 and legacy compilers):
# cppcoreguidelines-macro-usage, cppcoreguidelines-avoid-do-while (macros),
# cppcoreguidelines-pro-bounds-*, cppcoreguidelines-pro-type-reinterpret-cast,
# cppcoreguidelines-pro-type-union-access (parsers, serializers, basic_json's value union),
# cppcoreguidelines-avoid-const-or-ref-data-members, cppcoreguidelines-rvalue-reference-param-not-moved,
# cppcoreguidelines-avoid-non-const-global-variables, misc-non-private-member-variables-in-classes,
# misc-no-recursion (value walks are recursive, bounded by detail::recursion_depth_limit()),
# modernize-type-traits, modernize-use-constraints, modernize-use-ranges, modernize-use-std-numbers,
# modernize-use-designated-initializers, modernize-use-nodiscard, modernize-concat-nested-namespaces,
# readability-redundant-typename, readability-redundant-parentheses,
# readability-redundant-access-specifiers, readability-simplify-boolean-expr,
# readability-use-concise-preprocessor-directives, modernize-use-string-view,
# modernize-use-integer-sign-comparison (needs std::cmp_less; the flagged
# static_cast<std::size_t>(end - pos) < n comparisons are deliberate)
# (all need a newer standard or compiler than C++11, or would change macro-generated or
# deliberately explicit code).
# Too noisy to be useful (numeric parsing/formatting code, doctest, tests):
# bugprone-easily-swappable-parameters, cppcoreguidelines-avoid-magic-numbers, readability-magic-numbers,
# readability-identifier-length, readability-function-cognitive-complexity, performance-enum-size,
# concurrency-mt-unsafe, misc-confusable-identifiers, misc-include-cleaner (run on its own for
# the consumer headers in cmake/ci.cmake).
# portability-avoid-pragma-once: kept disabled on purpose. #pragma once is accepted # portability-avoid-pragma-once: kept disabled on purpose. #pragma once is accepted
# by every supported compiler, and tools/amalgamate/amalgamate.py strips it from # by every supported compiler, and tools/amalgamate/amalgamate.py strips it from
# single_include, so there is nothing left to fix here. # single_include, so there is nothing left to fix here.
@@ -40,14 +10,14 @@ Checks: '*,
-android-cloexec-fopen, -android-cloexec-fopen,
-boost-use-ranges, -boost-use-ranges,
-bugprone-easily-swappable-parameters, -bugprone-easily-swappable-parameters,
-bugprone-signed-bitwise, -cert-err58-cpp,
-clang-analyzer-webkit.NoUncountedMemberChecker,
-concurrency-mt-unsafe, -concurrency-mt-unsafe,
-cppcoreguidelines-avoid-const-or-ref-data-members, -cppcoreguidelines-avoid-const-or-ref-data-members,
-cppcoreguidelines-avoid-do-while, -cppcoreguidelines-avoid-do-while,
-cppcoreguidelines-avoid-goto, -cppcoreguidelines-avoid-goto,
-cppcoreguidelines-avoid-magic-numbers, -cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-avoid-non-const-global-variables, -cppcoreguidelines-avoid-non-const-global-variables,
-cppcoreguidelines-explicit-constructor,
-cppcoreguidelines-macro-usage, -cppcoreguidelines-macro-usage,
-cppcoreguidelines-pro-bounds-avoid-unchecked-container-access, -cppcoreguidelines-pro-bounds-avoid-unchecked-container-access,
-cppcoreguidelines-pro-bounds-array-to-pointer-decay, -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
@@ -56,15 +26,19 @@ Checks: '*,
-cppcoreguidelines-pro-type-reinterpret-cast, -cppcoreguidelines-pro-type-reinterpret-cast,
-cppcoreguidelines-pro-type-union-access, -cppcoreguidelines-pro-type-union-access,
-cppcoreguidelines-rvalue-reference-param-not-moved, -cppcoreguidelines-rvalue-reference-param-not-moved,
-cppcoreguidelines-virtual-class-destructor,
-fuchsia-default-arguments-calls, -fuchsia-default-arguments-calls,
-fuchsia-default-arguments-declarations, -fuchsia-default-arguments-declarations,
-fuchsia-overloaded-operator, -fuchsia-overloaded-operator,
-google-explicit-constructor, -google-explicit-constructor,
-google-readability-function-size,
-google-runtime-float, -google-runtime-float,
-google-runtime-int, -google-runtime-int,
-hicpp-avoid-goto, -hicpp-avoid-goto,
-hicpp-explicit-conversions, -hicpp-explicit-conversions,
-hicpp-function-size,
-hicpp-no-array-decay, -hicpp-no-array-decay,
-hicpp-no-assembler,
-hicpp-signed-bitwise, -hicpp-signed-bitwise,
-hicpp-uppercase-literal-suffix, -hicpp-uppercase-literal-suffix,
-llvm-header-guard, -llvm-header-guard,
@@ -74,7 +48,6 @@ Checks: '*,
-llvmlibc-*, -llvmlibc-*,
-misc-use-anonymous-namespace, -misc-use-anonymous-namespace,
-misc-confusable-identifiers, -misc-confusable-identifiers,
-misc-explicit-constructor,
-misc-include-cleaner, -misc-include-cleaner,
-misc-no-recursion, -misc-no-recursion,
-misc-non-private-member-variables-in-classes, -misc-non-private-member-variables-in-classes,
@@ -82,22 +55,20 @@ Checks: '*,
-modernize-type-traits, -modernize-type-traits,
-modernize-use-constraints, -modernize-use-constraints,
-modernize-use-designated-initializers, -modernize-use-designated-initializers,
-modernize-use-integer-sign-comparison,
-modernize-use-nodiscard, -modernize-use-nodiscard,
-modernize-use-ranges, -modernize-use-ranges,
-modernize-use-string-view,
-modernize-use-std-numbers, -modernize-use-std-numbers,
-modernize-use-trailing-return-type, -modernize-use-trailing-return-type,
-performance-enum-size, -performance-enum-size,
-portability-avoid-pragma-once, -portability-avoid-pragma-once,
-readability-function-cognitive-complexity, -readability-function-cognitive-complexity,
-readability-function-size,
-readability-identifier-length, -readability-identifier-length,
-readability-magic-numbers, -readability-magic-numbers,
-readability-redundant-access-specifiers, -readability-redundant-access-specifiers,
-readability-redundant-parentheses, -readability-redundant-parentheses,
-readability-redundant-typename, -readability-redundant-typename,
-readability-simplify-boolean-expr, -readability-simplify-boolean-expr,
-readability-trailing-comma,
-readability-uppercase-literal-suffix, -readability-uppercase-literal-suffix,
-readability-use-concise-preprocessor-directives' -readability-use-concise-preprocessor-directives'
+3 -3
View File
@@ -163,9 +163,9 @@ jobs:
python3 $GENERATOR --list-tags python3 $GENERATOR --list-tags
TAG_COUNT=$(python3 $GENERATOR --list-tags | wc -l) TAG_COUNT=$(python3 $GENERATOR --list-tags | wc -l)
python3 $GENERATOR --abi-tags diag,_dp,_vns --abi-tags _diag --output $RUNNER_TEMP/abi_tags.natvis python3 $GENERATOR --abi-tags diag,_dp,_ns --abi-tags _diag --output $RUNNER_TEMP/abi_tags.natvis
grep -q '<!-- Namespace nlohmann::json_abi_diag_dp_vns -->' $RUNNER_TEMP/abi_tags.natvis grep -q '<!-- Namespace nlohmann::json_abi_diag_dp_ns -->' $RUNNER_TEMP/abi_tags.natvis
grep -q '<!-- Namespace nlohmann::json_abi_diag_dp_vns_v[0-9_]* -->' $RUNNER_TEMP/abi_tags.natvis grep -q '<!-- Namespace nlohmann::json_abi_diag_dp_ns_v[0-9_]* -->' $RUNNER_TEMP/abi_tags.natvis
test $(grep -c '<!-- Namespace ' $RUNNER_TEMP/abi_tags.natvis) -eq $(( $(grep -c '<!-- Namespace ' nlohmann_json.natvis) + 2 )) test $(grep -c '<!-- Namespace ' $RUNNER_TEMP/abi_tags.natvis) -eq $(( $(grep -c '<!-- Namespace ' nlohmann_json.natvis) + 2 ))
python3 $GENERATOR --all --output $RUNNER_TEMP/all.natvis python3 $GENERATOR --all --output $RUNNER_TEMP/all.natvis
+1 -2
View File
@@ -43,8 +43,7 @@ jobs:
- name: flawfinder_scan - name: flawfinder_scan
uses: david-a-wheeler/flawfinder@c4216b74cf2639ffa98503768bd6e4299b5440c9 # v2.0.20 uses: david-a-wheeler/flawfinder@c4216b74cf2639ffa98503768bd6e4299b5440c9 # v2.0.20
with: with:
# single_include/ is omitted: it is generated from include/ and would report every finding twice arguments: '--sarif ./'
arguments: '--sarif ./cmake ./docs ./include ./src ./tests ./tools'
output: 'flawfinder_results.sarif' output: 'flawfinder_results.sarif'
- name: Upload analysis results to GitHub Security tab - name: Upload analysis results to GitHub Security tab
+1
View File
@@ -90,6 +90,7 @@ cc_library(
"include/nlohmann/detail/view/simd.hpp", "include/nlohmann/detail/view/simd.hpp",
"include/nlohmann/detail/view/string_ref.hpp", "include/nlohmann/detail/view/string_ref.hpp",
"include/nlohmann/detail/view/value.hpp", "include/nlohmann/detail/view/value.hpp",
"include/nlohmann/detail/view/view_mode.hpp",
"include/nlohmann/json.hpp", "include/nlohmann/json.hpp",
"include/nlohmann/json_fwd.hpp", "include/nlohmann/json_fwd.hpp",
"include/nlohmann/json_literals.hpp", "include/nlohmann/json_literals.hpp",
+1 -1
View File
@@ -309,7 +309,7 @@ The "Check amalgamation" workflow fails if the file is out of date.
The file covers the namespace variants with up to two ABI tags. A Natvis file for other configurations can be The file covers the namespace variants with up to two ABI tags. A Natvis file for other configurations can be
generated with the `--abi-tags` or `--all` options, for example generated with the `--abi-tags` or `--all` options, for example
`make natvis NATVIS_ARGS="--abi-tags _diag,_dp,_vns --output my_nlohmann_json.natvis"`; see `make natvis NATVIS_ARGS="--abi-tags _diag,_dp,_ns --output my_nlohmann_json.natvis"`; see
[`tools/generate_natvis`](tools/generate_natvis/README.md). With MSVC, CMake adds the file to the `nlohmann_json` [`tools/generate_natvis`](tools/generate_natvis/README.md). With MSVC, CMake adds the file to the `nlohmann_json`
target and installs it. target and installs it.
+1 -1
View File
@@ -120,7 +120,7 @@ $(AMALGAMATED_VIEW_FILE): $(SRCS)
tools/amalgamate/amalgamate.py -c tools/amalgamate/config_json_view.json -s . --verbose=yes tools/amalgamate/amalgamate.py -c tools/amalgamate/config_json_view.json -s . --verbose=yes
NATVIS_VENV=tools/generate_natvis/venv NATVIS_VENV=tools/generate_natvis/venv
# extra options for generate_natvis.py, e.g. NATVIS_ARGS="--abi-tags _diag,_dp,_vns --output my.natvis" # extra options for generate_natvis.py, e.g. NATVIS_ARGS="--abi-tags _diag,_dp,_ns --output my.natvis"
NATVIS_ARGS= NATVIS_ARGS=
# regenerate nlohmann_json.natvis from the ABI tags and version in include/nlohmann/detail/abi_macros.hpp # regenerate nlohmann_json.natvis from the ABI tags and version in include/nlohmann/detail/abi_macros.hpp
+4 -4
View File
@@ -151,7 +151,7 @@ The `json` class provides an API for manipulating a JSON value. To create a `jso
```cpp ```cpp
#include <fstream> #include <fstream>
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using json = nlohmann::json;
// ... // ...
@@ -164,7 +164,7 @@ If using modules (enabled with `NLOHMANN_JSON_BUILD_MODULES`), this example beco
import std; import std;
import nlohmann.json; import nlohmann.json;
using nlohmann::json; using json = nlohmann::json;
// ... // ...
@@ -842,7 +842,7 @@ assert(p == p2);
To make this work with one of your types, you only need to provide two functions: To make this work with one of your types, you only need to provide two functions:
```cpp ```cpp
using nlohmann::json; using json = nlohmann::json;
namespace ns { namespace ns {
void to_json(json& j, const person& p) { void to_json(json& j, const person& p) {
@@ -1257,7 +1257,7 @@ See the page [quality assurance](https://json.nlohmann.me/community/quality_assu
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
// for convenience // for convenience
using nlohmann::json; using json = nlohmann::json;
``` ```
to the files you want to process JSON and set the necessary switches to enable C++11 (e.g., `-std=c++11` for GCC and Clang). to the files you want to process JSON and set the necessary switches to enable C++11 (e.g., `-std=c++11` for GCC and Clang).
@@ -67,9 +67,7 @@ class (either explicitly or via the conversion operators).
## See also ## See also
- [`to_json`](to_json.md) - convert a C++ value to JSON - [to_json](to_json.md)
- [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) - serializing enums as JSON strings - [Specializing enum conversion](../../features/enum_conversion.md)
## Version history ## Version history
@@ -36,9 +36,7 @@ This function is usually called by the constructors of the [basic_json](../basic
## See also ## See also
- [`from_json`](from_json.md) - convert JSON to a C++ value - [from_json](from_json.md)
- [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
+3 -8
View File
@@ -148,20 +148,15 @@ 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
+4 -6
View File
@@ -69,12 +69,10 @@ 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,8 +46,7 @@ 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
+4 -6
View File
@@ -230,12 +230,10 @@ Strong exception safety: if an exception occurs, the original value stays intact
## See also ## See also
- [Checked access](../../features/element_access/checked_access.md) - element access with range checking - documentation on [checked access](../../features/element_access/checked_access.md)
- [`operator[]`](operator%5B%5D.md) - unchecked access by reference - [`operator[]`](operator%5B%5D.md) for unchecked access by reference
- [`value`](value.md) - access with default value - [`value`](value.md) for 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
+2 -3
View File
@@ -57,9 +57,8 @@ 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
+9 -13
View File
@@ -113,22 +113,19 @@ 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.
@@ -476,13 +473,12 @@ 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
+6 -11
View File
@@ -7,12 +7,7 @@ const_iterator begin() const noexcept;
Returns an iterator to the first element. Returns an iterator to the first element.
<div class="nj-fig-wrap" markdown> ![Illustration from cppreference.com](../../images/range-begin-end.svg)
--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
@@ -44,12 +39,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
+4 -5
View File
@@ -63,11 +63,10 @@ initialization of a binary array type, for backwards compatibility and so it doe
## See also ## See also
- [Binary formats](../../features/binary_formats/index.md) - formats that can store binary values - [binary_t](binary_t.md) type for binary values
- [`binary_t`](binary_t.md) - type for binary values - [get_binary](get_binary.md) get a reference to the stored binary value
- [`get_binary`](get_binary.md) - get a reference to the stored binary value - [is_binary](is_binary.md) return whether the value is binary
- [`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
- [`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
+1 -3
View File
@@ -117,9 +117,7 @@ type `#!cpp binary_t*` must be dereferenced.
## See also ## See also
- [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled - [byte_container_with_subtype](../byte_container_with_subtype/index.md)
- [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
+1 -3
View File
@@ -47,9 +47,7 @@ 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
+5 -10
View File
@@ -6,12 +6,7 @@ const_iterator cbegin() const noexcept;
Returns an iterator to the first element. Returns an iterator to the first element.
<div class="nj-fig-wrap" markdown> ![Illustration from cppreference.com](../../images/range-begin-end.svg)
--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
@@ -43,11 +38,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,10 +40,9 @@ store
## See also ## See also
- [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled - [from_cbor](from_cbor.md) deserializes a JSON value from CBOR
- [`from_cbor`](from_cbor.md) - deserializes a JSON value from CBOR - [input_format_t](input_format_t.md) the enumeration of supported input formats
- [`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
- [`CBOR`](../../features/binary_formats/cbor.md) - the article on the CBOR format
## Version history ## Version history
+5 -10
View File
@@ -6,12 +6,7 @@ const_iterator cend() const noexcept;
Returns an iterator to one past the last element. Returns an iterator to one past the last element.
<div class="nj-fig-wrap" markdown> ![Illustration from cppreference.com](../../images/range-begin-end.svg)
--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
@@ -43,11 +38,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
+2 -3
View File
@@ -54,9 +54,8 @@ 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
+3 -4
View File
@@ -134,10 +134,9 @@ 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
+3 -4
View File
@@ -85,10 +85,9 @@ 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
+4 -10
View File
@@ -6,13 +6,7 @@ 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.
<div class="nj-fig-wrap" markdown> ![Illustration from cppreference.com](../../images/range-rbegin-rend.svg)
--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
@@ -44,9 +38,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
+4 -10
View File
@@ -7,13 +7,7 @@ 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.
<div class="nj-fig-wrap" markdown> ![Illustration from cppreference.com](../../images/range-rbegin-rend.svg)
--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
@@ -45,9 +39,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,10 +32,8 @@ 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
+5 -6
View File
@@ -55,12 +55,11 @@ Currently, only `remove`, `add`, and `replace` operations are generated.
## See also ## See also
- [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) - specification of JSON Patch - [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902)
- [`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
+5 -10
View File
@@ -7,12 +7,7 @@ const_iterator end() const noexcept;
Returns an iterator to one past the last element. Returns an iterator to one past the last element.
<div class="nj-fig-wrap" markdown> ![Illustration from cppreference.com](../../images/range-begin-end.svg)
--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
@@ -44,11 +39,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
+2 -3
View File
@@ -60,9 +60,8 @@ 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) - overview of the supported conversions - [JSON_DIAGNOSTIC_POSITIONS](../macros/json_diagnostic_positions.md) for an overview of the diagnostic positions
- [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
+1 -8
View File
@@ -40,9 +40,6 @@ 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
@@ -83,11 +80,7 @@ constructor.
## See also ## See also
- [List of exceptions](../../home/exceptions.md) - overview of all exceptions thrown by the library [List of exceptions](../../home/exceptions.md)
- [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
+3 -4
View File
@@ -91,11 +91,10 @@ 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
+1 -2
View File
@@ -58,8 +58,7 @@ 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) - serialize a JSON value to a string - [dump](dump.md)
- [`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
+6 -10
View File
@@ -107,16 +107,12 @@ Linear in the size of the input.
## See also ## See also
- [BJData](../../features/binary_formats/bjdata.md) - the format, its byte layout and how values are mapped - [to_bjdata](to_bjdata.md) create a BJData serialization of a JSON value
- [Binary formats](../../features/binary_formats/index.md) - overview and comparison of the supported binary formats - [from_cbor](from_cbor.md) create a JSON value from an input in CBOR format
- [Parsing untrusted input](../../features/parsing/untrusted_input.md) - limits and safe handling of hostile data - [from_msgpack](from_msgpack.md) create a JSON value from an input in MessagePack format
- [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled - [from_bson](from_bson.md) create a JSON value from an input in BSON format
- [`to_bjdata`](to_bjdata.md) - create a BJData 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_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_bon8`](from_bon8.md) - create a JSON value from an input in BON8 format
## Version history ## Version history
+6 -9
View File
@@ -96,15 +96,12 @@ Linear in the size of the input.
## See also ## See also
- [`BON8`](../../features/binary_formats/bon8.md) - the format, its byte layout and how values are mapped - [to_bon8](to_bon8.md) create a BON8 serialization of a JSON value
- [Binary formats](../../features/binary_formats/index.md) - overview and comparison of the supported binary formats - [from_cbor](from_cbor.md) create a JSON value from an input in CBOR format
- [Parsing untrusted input](../../features/parsing/untrusted_input.md) - limits and safe handling of hostile data - [from_msgpack](from_msgpack.md) create a JSON value from an input in MessagePack format
- [`to_bon8`](to_bon8.md) - create a BON8 serialization of a JSON value - [from_bson](from_bson.md) create a JSON value from an input in BSON format
- [`from_cbor`](from_cbor.md) - create a JSON value from an input in CBOR format - [from_ubjson](from_ubjson.md) create a JSON value from an input in UBJSON format
- [`from_msgpack`](from_msgpack.md) - create a JSON value from an input in MessagePack format - [from_bjdata](from_bjdata.md) create a JSON value from an input in BJData 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
+7 -11
View File
@@ -108,17 +108,13 @@ Linear in the size of the input.
## See also ## See also
- [`BSON`](../../features/binary_formats/bson.md) - the format, its byte layout and how values are mapped - [BSON specification](http://bsonspec.org/spec.html)
- [Binary formats](../../features/binary_formats/index.md) - overview and comparison of the supported binary formats - [to_bson](to_bson.md) for the analogous serialization
- [Parsing untrusted input](../../features/parsing/untrusted_input.md) - limits and safe handling of hostile data - [from_cbor](from_cbor.md) for the related CBOR format
- [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled - [from_msgpack](from_msgpack.md) for the related MessagePack format
- [BSON specification](http://bsonspec.org/spec.html) - specification of the BSON format - [from_ubjson](from_ubjson.md) for the related UBJSON format
- [`to_bson`](to_bson.md) - the analogous serialization - [from_bjdata](from_bjdata.md) for the related BJData format
- [`from_cbor`](from_cbor.md) - the related CBOR format - [from_bon8](from_bon8.md) for the related BON8 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
+6 -10
View File
@@ -114,16 +114,12 @@ Linear in the size of the input.
## See also ## See also
- [`CBOR`](../../features/binary_formats/cbor.md) - the format, its byte layout and how values are mapped - [to_cbor](to_cbor.md) create a CBOR serialization of a JSON value
- [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_cbor`](to_cbor.md) - create a CBOR serialization of a JSON value - [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_bon8](from_bon8.md) create a JSON value from an input in BON8 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,16 +107,12 @@ Linear in the size of the input.
## See also ## See also
- [MessagePack](../../features/binary_formats/messagepack.md) - the format, its byte layout and how values are mapped - [to_msgpack](to_msgpack.md) create a MessagePack serialization of a JSON value
- [Binary formats](../../features/binary_formats/index.md) - overview and comparison of the supported binary formats - [from_cbor](from_cbor.md) create a JSON value from an input in CBOR 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_msgpack`](to_msgpack.md) - create a MessagePack serialization of a JSON value - [from_bjdata](from_bjdata.md) create a JSON value from an input in BJData format
- [`from_cbor`](from_cbor.md) - create a JSON value from an input in CBOR format - [from_bon8](from_bon8.md) create a JSON value from an input in BON8 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
+6 -10
View File
@@ -107,16 +107,12 @@ Linear in the size of the input.
## See also ## See also
- [`UBJSON`](../../features/binary_formats/ubjson.md) - the format, its byte layout and how values are mapped - [to_ubjson](to_ubjson.md) create a UBJSON serialization of a JSON value
- [Binary formats](../../features/binary_formats/index.md) - overview and comparison of the supported binary formats - [from_cbor](from_cbor.md) create a JSON value from an input in CBOR format
- [Parsing untrusted input](../../features/parsing/untrusted_input.md) - limits and safe handling of hostile data - [from_msgpack](from_msgpack.md) create a JSON value from an input in MessagePack format
- [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled - [from_bson](from_bson.md) create a JSON value from an input in BSON format
- [`to_ubjson`](to_ubjson.md) - create a UBJSON serialization of a JSON value - [from_bjdata](from_bjdata.md) create a JSON value from an input in BJData format
- [`from_cbor`](from_cbor.md) - create a JSON value from an input in CBOR format - [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_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
+2 -3
View File
@@ -50,10 +50,9 @@ 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
+5 -6
View File
@@ -178,14 +178,13 @@ 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,11 +42,8 @@ Constant.
## See also ## See also
- [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled - [get](get.md) get a value (explicit conversion)
- [`binary`](binary.md) - create a binary value - [get_ref](get_ref.md) get a reference to the stored 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 -3
View File
@@ -45,7 +45,7 @@ Constant.
#include <iostream> #include <iostream>
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using json = nlohmann::json;
int main() int main()
{ {
@@ -86,8 +86,7 @@ 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
+2 -3
View File
@@ -60,10 +60,9 @@ 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
+4 -5
View File
@@ -68,12 +68,11 @@ 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
+4 -9
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,15 +358,10 @@ 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)
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
- [`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,9 +53,8 @@ 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
+4 -5
View File
@@ -185,11 +185,10 @@ 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,9 +40,6 @@ 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
@@ -69,14 +66,12 @@ base class, and the highlighted box is `basic_json::invalid_iterator`.</p>
## See also ## See also
- [`exception`](exception.md) - the base class of all exceptions thrown by the library - [`exception`](exception.md) for the base class of all exceptions thrown by the library
- [List of iterator errors](../../home/exceptions.md#iterator-errors) - overview of iterator errors (`invalid_iterator`) - [List of iterator errors](../../home/exceptions.md#iterator-errors)
- [`parse_error`](parse_error.md) - exceptions indicating a parse error - [`parse_error`](parse_error.md) for exceptions indicating a parse error
- [`type_error`](type_error.md) - exceptions indicating executing a member function with a wrong type - [`type_error`](type_error.md) for exceptions indicating executing a member function with a wrong type
- [`out_of_range`](out_of_range.md) - exceptions indicating access out of the defined range - [`out_of_range`](out_of_range.md) for exceptions indicating access out of the defined range
- [`other_error`](other_error.md) - exceptions indicating other library errors - [`other_error`](other_error.md) for 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
+5 -6
View File
@@ -36,12 +36,11 @@ 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
+4 -5
View File
@@ -36,11 +36,10 @@ Constant.
## See also ## See also
- [Binary values](../../features/binary_values.md) - how binary values and subtypes are handled - [is_primitive](is_primitive.md) checks whether the JSON value is primitive
- [`is_primitive`](is_primitive.md) - checks whether the JSON value is primitive - [binary_t](binary_t.md) the type used to store binary values
- [`binary_t`](binary_t.md) - the type used to store binary values - [get_binary](get_binary.md) returns a reference to the stored binary value
- [`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
- [`basic_json_view::is_binary`](../basic_json_view/is_binary.md) - the same check on a zero-copy view
## Version history ## Version history
@@ -36,10 +36,9 @@ 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,9 +87,8 @@ 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
+5 -6
View File
@@ -36,12 +36,11 @@ 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
+4 -6
View File
@@ -46,12 +46,10 @@ 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,12 +37,10 @@ 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,12 +37,10 @@ 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,12 +40,10 @@ 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
+5 -6
View File
@@ -36,12 +36,11 @@ 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,14 +56,13 @@ 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
+4 -5
View File
@@ -36,11 +36,10 @@ 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,11 +54,10 @@ 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
+3 -4
View File
@@ -97,11 +97,10 @@ 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,11 +44,10 @@ 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,10 +70,9 @@ 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) - specification of JSON Merge Patch - [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396)
- [`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,10 +65,9 @@ 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) - specification of JSON Merge Patch - [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396)
- [`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
+2 -5
View File
@@ -48,11 +48,8 @@ Constant.
## See also ## See also
- [`NLOHMANN_JSON_VERSION_MAJOR`](../macros/nlohmann_json_version_major.md) / - [**NLOHMANN_JSON_VERSION_MAJOR**/**NLOHMANN_JSON_VERSION_MINOR**/**NLOHMANN_JSON_VERSION_PATCH**](../macros/nlohmann_json_version_major.md)
[`NLOHMANN_JSON_VERSION_MINOR`](../macros/nlohmann_json_version_major.md) / \- library version information
[`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,11 +84,10 @@ 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,11 +80,10 @@ 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,11 +82,10 @@ 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,10 +27,8 @@ 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
+3 -5
View File
@@ -125,12 +125,10 @@ 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,9 +123,8 @@ 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
+2 -3
View File
@@ -45,9 +45,8 @@ 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,15 +271,13 @@ Strong exception safety: if an exception occurs, the original value stays intact
## See also ## See also
- [Unchecked access](../../features/element_access/unchecked_access.md) - element access without range checking - documentation on [unchecked access](../../features/element_access/unchecked_access.md)
- [Runtime assertions](../../features/assertions.md) - assertions guarding against undefined behavior - documentation on [runtime assertions](../../features/assertions.md)
- [`at`](at.md) - access by reference with range checking - see [`at`](at.md) for access by reference with range checking
- [`value`](value.md) - access with default value - see [`value`](value.md) for 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,9 +49,8 @@ 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
+6 -11
View File
@@ -40,9 +40,6 @@ 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
@@ -69,14 +66,12 @@ base class, and the highlighted box is `basic_json::other_error`.</p>
## See also ## See also
- [`exception`](exception.md) - the base class of all exceptions thrown by the library - [`exception`](exception.md) for the base class of all exceptions thrown by the library
- [List of other errors](../../home/exceptions.md#further-exceptions) - overview of further errors (`other_error`) - [List of other errors](../../home/exceptions.md#further-exceptions)
- [`parse_error`](parse_error.md) - exceptions indicating a parse error - [`parse_error`](parse_error.md) for exceptions indicating a parse error
- [`invalid_iterator`](invalid_iterator.md) - exceptions indicating errors with iterators - [`invalid_iterator`](invalid_iterator.md) for exceptions indicating errors with iterators
- [`type_error`](type_error.md) - exceptions indicating executing a member function with a wrong type - [`type_error`](type_error.md) for exceptions indicating executing a member function with a wrong type
- [`out_of_range`](out_of_range.md) - exceptions indicating access out of the defined range - [`out_of_range`](out_of_range.md) for 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,9 +41,6 @@ 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
@@ -70,15 +67,12 @@ base class, and the highlighted box is `basic_json::out_of_range`.</p>
## See also ## See also
- [`exception`](exception.md) - the base class of all exceptions thrown by the library - [`exception`](exception.md) for the base class of all exceptions thrown by the library
- [List of out-of-range errors](../../home/exceptions.md#out-of-range) - overview of out-of-range errors - [List of out-of-range errors](../../home/exceptions.md#out-of-range)
(`out_of_range`) - [`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 - [`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
+3 -9
View File
@@ -282,21 +282,15 @@ 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
+6 -11
View File
@@ -43,9 +43,6 @@ 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
@@ -78,14 +75,12 @@ or the end of file. This also holds true when reading a byte vector for binary f
## See also ## See also
- [`exception`](exception.md) - the base class of all exceptions thrown by the library - [`exception`](exception.md) for the base class of all exceptions thrown by the library
- [List of parse errors](../../home/exceptions.md#parse-errors) - overview of parse errors (`parse_error`) - [List of parse errors](../../home/exceptions.md#parse-errors)
- [`invalid_iterator`](invalid_iterator.md) - exceptions indicating errors with iterators - [`invalid_iterator`](invalid_iterator.md) for exceptions indicating errors with iterators
- [`type_error`](type_error.md) - exceptions indicating executing a member function with a wrong type - [`type_error`](type_error.md) for exceptions indicating executing a member function with a wrong type
- [`out_of_range`](out_of_range.md) - exceptions indicating access out of the defined range - [`out_of_range`](out_of_range.md) for exceptions indicating access out of the defined range
- [`other_error`](other_error.md) - exceptions indicating other library errors - [`other_error`](other_error.md) for 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
Loaded 100 of 841 files, more files were not shown because too many files have changed in this diff. Show more