From c25905a6df1615f8c7726007436ce68f73d2db6c Mon Sep 17 00:00:00 2001 From: nlohmann Date: Tue, 4 Nov 2025 07:04:52 +0000 Subject: [PATCH] deploy: 9c3818516776e3fb99e2237313e4b70534ce5009 --- api/adl_serializer/from_json/index.html | 2 +- api/adl_serializer/index.html | 2 +- api/adl_serializer/to_json/index.html | 2 +- api/basic_json/accept/index.html | 2 +- api/basic_json/array/index.html | 2 +- api/basic_json/array_t/index.html | 2 +- api/basic_json/at/index.html | 2 +- api/basic_json/back/index.html | 2 +- api/basic_json/basic_json/index.html | 2 +- api/basic_json/begin/index.html | 2 +- api/basic_json/binary/index.html | 2 +- api/basic_json/binary_t/index.html | 2 +- api/basic_json/boolean_t/index.html | 2 +- api/basic_json/cbegin/index.html | 2 +- api/basic_json/cbor_tag_handler_t/index.html | 2 +- api/basic_json/cend/index.html | 2 +- api/basic_json/clear/index.html | 2 +- api/basic_json/contains/index.html | 2 +- api/basic_json/count/index.html | 2 +- api/basic_json/crbegin/index.html | 2 +- api/basic_json/crend/index.html | 2 +- .../default_object_comparator_t/index.html | 2 +- api/basic_json/diff/index.html | 2 +- api/basic_json/dump/index.html | 2 +- api/basic_json/emplace/index.html | 2 +- api/basic_json/emplace_back/index.html | 2 +- api/basic_json/empty/index.html | 2 +- api/basic_json/end/index.html | 2 +- api/basic_json/end_pos/index.html | 2 +- api/basic_json/erase/index.html | 2 +- api/basic_json/error_handler_t/index.html | 2 +- api/basic_json/exception/index.html | 2 +- api/basic_json/find/index.html | 2 +- api/basic_json/flatten/index.html | 2 +- api/basic_json/from_bjdata/index.html | 2 +- api/basic_json/from_bson/index.html | 2 +- api/basic_json/from_cbor/index.html | 2 +- api/basic_json/from_msgpack/index.html | 2 +- api/basic_json/from_ubjson/index.html | 2 +- api/basic_json/front/index.html | 2 +- api/basic_json/get/index.html | 2 +- api/basic_json/get_allocator/index.html | 2 +- api/basic_json/get_binary/index.html | 2 +- api/basic_json/get_ptr/index.html | 2 +- api/basic_json/get_ref/index.html | 2 +- api/basic_json/get_to/index.html | 2 +- api/basic_json/index.html | 2 +- api/basic_json/input_format_t/index.html | 2 +- api/basic_json/insert/index.html | 2 +- api/basic_json/invalid_iterator/index.html | 2 +- api/basic_json/is_array/index.html | 2 +- api/basic_json/is_binary/index.html | 2 +- api/basic_json/is_boolean/index.html | 2 +- api/basic_json/is_discarded/index.html | 2 +- api/basic_json/is_null/index.html | 2 +- api/basic_json/is_number/index.html | 2 +- api/basic_json/is_number_float/index.html | 2 +- api/basic_json/is_number_integer/index.html | 2 +- api/basic_json/is_number_unsigned/index.html | 2 +- api/basic_json/is_object/index.html | 2 +- api/basic_json/is_primitive/index.html | 2 +- api/basic_json/is_string/index.html | 2 +- api/basic_json/is_structured/index.html | 2 +- api/basic_json/items/index.html | 2 +- api/basic_json/json_base_class_t/index.html | 2 +- api/basic_json/json_serializer/index.html | 2 +- api/basic_json/max_size/index.html | 2 +- api/basic_json/merge_patch/index.html | 2 +- api/basic_json/meta/index.html | 2 +- api/basic_json/number_float_t/index.html | 2 +- api/basic_json/number_integer_t/index.html | 2 +- api/basic_json/number_unsigned_t/index.html | 2 +- api/basic_json/object/index.html | 2 +- api/basic_json/object_comparator_t/index.html | 2 +- api/basic_json/object_t/index.html | 2 +- api/basic_json/operator+=/index.html | 2 +- api/basic_json/operator=/index.html | 2 +- api/basic_json/operator[]/index.html | 2 +- api/basic_json/operator_ValueType/index.html | 2 +- api/basic_json/operator_eq/index.html | 2 +- api/basic_json/operator_ge/index.html | 2 +- api/basic_json/operator_gt/index.html | 2 +- api/basic_json/operator_le/index.html | 2 +- api/basic_json/operator_lt/index.html | 2 +- api/basic_json/operator_ne/index.html | 2 +- api/basic_json/operator_spaceship/index.html | 2 +- api/basic_json/operator_value_t/index.html | 2 +- api/basic_json/other_error/index.html | 2 +- api/basic_json/out_of_range/index.html | 2 +- api/basic_json/parse/index.html | 2 +- api/basic_json/parse_error/index.html | 2 +- api/basic_json/parse_event_t/index.html | 2 +- api/basic_json/parser_callback_t/index.html | 2 +- api/basic_json/patch/index.html | 2 +- api/basic_json/patch_inplace/index.html | 2 +- api/basic_json/push_back/index.html | 2 +- api/basic_json/rbegin/index.html | 2 +- api/basic_json/rend/index.html | 2 +- api/basic_json/sax_parse/index.html | 2 +- api/basic_json/size/index.html | 2 +- api/basic_json/start_pos/index.html | 2 +- api/basic_json/std_hash/index.html | 2 +- api/basic_json/std_swap/index.html | 2 +- api/basic_json/string_t/index.html | 2 +- api/basic_json/swap/index.html | 2 +- api/basic_json/to_bjdata/index.html | 2 +- api/basic_json/to_bson/index.html | 2 +- api/basic_json/to_cbor/index.html | 2 +- api/basic_json/to_msgpack/index.html | 2 +- api/basic_json/to_string/index.html | 2 +- api/basic_json/to_ubjson/index.html | 2 +- api/basic_json/type/index.html | 2 +- api/basic_json/type_error/index.html | 2 +- api/basic_json/type_name/index.html | 2 +- api/basic_json/unflatten/index.html | 2 +- api/basic_json/update/index.html | 2 +- api/basic_json/value/index.html | 2 +- api/basic_json/value_t/index.html | 2 +- api/basic_json/~basic_json/index.html | 2 +- .../byte_container_with_subtype/index.html | 2 +- .../clear_subtype/index.html | 2 +- .../has_subtype/index.html | 2 +- api/byte_container_with_subtype/index.html | 2 +- .../set_subtype/index.html | 2 +- .../subtype/index.html | 2 +- api/json/index.html | 2 +- api/json_pointer/back/index.html | 2 +- api/json_pointer/empty/index.html | 2 +- api/json_pointer/index.html | 2 +- api/json_pointer/json_pointer/index.html | 2 +- api/json_pointer/operator_eq/index.html | 2 +- api/json_pointer/operator_ne/index.html | 2 +- api/json_pointer/operator_slash/index.html | 2 +- api/json_pointer/operator_slasheq/index.html | 2 +- api/json_pointer/operator_string_t/index.html | 2 +- api/json_pointer/parent_pointer/index.html | 2 +- api/json_pointer/pop_back/index.html | 2 +- api/json_pointer/push_back/index.html | 2 +- api/json_pointer/string_t/index.html | 2 +- api/json_pointer/to_string/index.html | 2 +- api/json_sax/binary/index.html | 2 +- api/json_sax/boolean/index.html | 2 +- api/json_sax/end_array/index.html | 2 +- api/json_sax/end_object/index.html | 2 +- api/json_sax/index.html | 2 +- api/json_sax/key/index.html | 2 +- api/json_sax/null/index.html | 2 +- api/json_sax/number_float/index.html | 2 +- api/json_sax/number_integer/index.html | 2 +- api/json_sax/number_unsigned/index.html | 2 +- api/json_sax/parse_error/index.html | 2 +- api/json_sax/start_array/index.html | 2 +- api/json_sax/start_object/index.html | 2 +- api/json_sax/string/index.html | 2 +- api/macros/index.html | 2 +- api/macros/json_assert/index.html | 2 +- .../json_diagnostic_positions/index.html | 2 +- api/macros/json_diagnostics/index.html | 2 +- .../index.html | 2 +- api/macros/json_has_cpp_11/index.html | 2 +- api/macros/json_has_filesystem/index.html | 2 +- api/macros/json_has_ranges/index.html | 2 +- api/macros/json_has_static_rtti/index.html | 2 +- .../json_has_three_way_comparison/index.html | 2 +- api/macros/json_no_io/index.html | 2 +- api/macros/json_noexception/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- api/macros/json_throw_user/index.html | 2 +- api/macros/json_use_global_udls/index.html | 2 +- .../json_use_implicit_conversions/index.html | 2 +- .../index.html | 2 +- .../nlohmann_define_derived_type/index.html | 2 +- .../nlohmann_define_type_intrusive/index.html | 2 +- .../index.html | 2 +- api/macros/nlohmann_json_namespace/index.html | 2 +- .../nlohmann_json_namespace_begin/index.html | 2 +- .../index.html | 2 +- .../nlohmann_json_serialize_enum/index.html | 2 +- .../nlohmann_json_version_major/index.html | 2 +- api/operator_gtgt/index.html | 2 +- api/operator_literal_json/index.html | 2 +- api/operator_literal_json_pointer/index.html | 2 +- api/operator_ltlt/index.html | 2 +- api/ordered_json/index.html | 2 +- api/ordered_map/index.html | 2 +- community/code_of_conduct/index.html | 2 +- community/contribution_guidelines/index.html | 2 +- community/governance/index.html | 2 +- community/index.html | 2 +- community/quality_assurance/index.html | 2 +- community/security_policy/index.html | 2 +- features/arbitrary_types/index.html | 2 +- features/assertions/index.html | 2 +- features/binary_formats/bjdata/index.html | 2 +- features/binary_formats/bson/index.html | 2 +- features/binary_formats/cbor/index.html | 2 +- features/binary_formats/index.html | 2 +- .../binary_formats/messagepack/index.html | 2 +- features/binary_formats/ubjson/index.html | 2 +- features/binary_values/index.html | 2 +- features/comments/index.html | 2 +- .../element_access/checked_access/index.html | 2 +- .../element_access/default_value/index.html | 2 +- features/element_access/index.html | 2 +- .../unchecked_access/index.html | 2 +- features/enum_conversion/index.html | 2 +- features/iterators/index.html | 2 +- features/json_patch/index.html | 2 +- features/json_pointer/index.html | 2 +- features/macros/index.html | 2 +- features/merge_patch/index.html | 2 +- features/modules/index.html | 2 +- features/namespace/index.html | 2 +- features/object_order/index.html | 2 +- features/parsing/index.html | 2 +- features/parsing/json_lines/index.html | 2 +- features/parsing/parse_exceptions/index.html | 2 +- features/parsing/parser_callbacks/index.html | 2 +- features/parsing/sax_interface/index.html | 2 +- features/trailing_commas/index.html | 2 +- features/types/index.html | 2 +- features/types/number_handling/index.html | 2 +- home/architecture/index.html | 2 +- home/customers/index.html | 2 +- home/design_goals/index.html | 2 +- home/exceptions/index.html | 2 +- home/faq/index.html | 2 +- home/license/index.html | 2 +- home/releases/index.html | 2 +- home/sponsors/index.html | 2 +- index.html | 2 +- integration/cmake/index.html | 2 +- integration/index.html | 2 +- integration/migration_guide/index.html | 2 +- integration/package_managers/index.html | 2 +- integration/pkg-config/index.html | 2 +- sitemap.xml | 474 +++++++++--------- sitemap.xml.gz | Bin 1742 -> 1742 bytes 239 files changed, 474 insertions(+), 474 deletions(-) diff --git a/api/adl_serializer/from_json/index.html b/api/adl_serializer/from_json/index.html index cca13ba29..768117336 100644 --- a/api/adl_serializer/from_json/index.html +++ b/api/adl_serializer/from_json/index.html @@ -101,4 +101,4 @@ std::cout << p.name << " (" << p.age << ") lives in " << p.address << std::endl; }

Output:

Ned Flanders (60) lives in 744 Evergreen Terrace
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/adl_serializer/index.html b/api/adl_serializer/index.html index ffe2e03a4..2e4e5983e 100644 --- a/api/adl_serializer/index.html +++ b/api/adl_serializer/index.html @@ -12,4 +12,4 @@ // same thing, but with the "from_json" method } }; -

Member functions

Version history

\ No newline at end of file +

Member functions

Version history

\ No newline at end of file diff --git a/api/adl_serializer/to_json/index.html b/api/adl_serializer/to_json/index.html index c06ffd8ca..1aba30c14 100644 --- a/api/adl_serializer/to_json/index.html +++ b/api/adl_serializer/to_json/index.html @@ -35,4 +35,4 @@ std::cout << j << std::endl; }

Output:

{"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"}
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/accept/index.html b/api/basic_json/accept/index.html index 5469c1ae0..fd2c029ec 100644 --- a/api/basic_json/accept/index.html +++ b/api/basic_json/accept/index.html @@ -36,4 +36,4 @@ << json::accept(invalid_text) << '\n'; }

Output:

true false
-

See also

Version history

Deprecation

Overload (2) replaces calls to accept with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like accept({ptr, ptr+len}, ...); with accept(ptr, ptr+len, ...);.

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file +

See also

Version history

Deprecation

Overload (2) replaces calls to accept with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like accept({ptr, ptr+len}, ...); with accept(ptr, ptr+len, ...);.

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file diff --git a/api/basic_json/array/index.html b/api/basic_json/array/index.html index 49461e53c..dcf8ad630 100644 --- a/api/basic_json/array/index.html +++ b/api/basic_json/array/index.html @@ -22,4 +22,4 @@ [] [1,2,3,4] [["one",1],["two",2]] -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/array_t/index.html b/api/basic_json/array_t/index.html index 45598f887..5815d0fbf 100644 --- a/api/basic_json/array_t/index.html +++ b/api/basic_json/array_t/index.html @@ -14,4 +14,4 @@ std::cout << std::boolalpha << std::is_same<std::vector<json>, json::array_t>::value << std::endl; }

Output:

true
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/at/index.html b/api/basic_json/at/index.html index 82a92615b..d90001190 100644 --- a/api/basic_json/at/index.html +++ b/api/basic_json/at/index.html @@ -498,4 +498,4 @@ [json.exception.out_of_range.402] array index '-' (2) is out of range [json.exception.out_of_range.403] key 'foo' not found [json.exception.out_of_range.404] unresolved reference token 'foo' -

See also

Version history

  1. Added in version 1.0.0.
  2. Added in version 1.0.0.
  3. Added in version 3.11.0.
  4. Added in version 2.0.0.
\ No newline at end of file +

See also

Version history

  1. Added in version 1.0.0.
  2. Added in version 1.0.0.
  3. Added in version 3.11.0.
  4. Added in version 2.0.0.
\ No newline at end of file diff --git a/api/basic_json/back/index.html b/api/basic_json/back/index.html index 91d0c30ee..daba078e9 100644 --- a/api/basic_json/back/index.html +++ b/api/basic_json/back/index.html @@ -49,4 +49,4 @@ 16 "Hello, world" [json.exception.invalid_iterator.214] cannot get value -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/basic_json/index.html b/api/basic_json/basic_json/index.html index 0f2fe1fd4..ffeed2ba9 100644 --- a/api/basic_json/basic_json/index.html +++ b/api/basic_json/basic_json/index.html @@ -455,4 +455,4 @@ }

Output:

null
 23
-

Version history

  1. Since version 1.0.0.
  2. Since version 1.0.0.
  3. Since version 2.1.0.
  4. Since version 3.2.0.
  5. Since version 1.0.0.
  6. Since version 1.0.0.
  7. Since version 1.0.0.
  8. Since version 1.0.0.
  9. Since version 1.0.0.
\ No newline at end of file +

Version history

  1. Since version 1.0.0.
  2. Since version 1.0.0.
  3. Since version 2.1.0.
  4. Since version 3.2.0.
  5. Since version 1.0.0.
  6. Since version 1.0.0.
  7. Since version 1.0.0.
  8. Since version 1.0.0.
  9. Since version 1.0.0.
\ No newline at end of file diff --git a/api/basic_json/begin/index.html b/api/basic_json/begin/index.html index 87c93a30c..fbfa17de4 100644 --- a/api/basic_json/begin/index.html +++ b/api/basic_json/begin/index.html @@ -17,4 +17,4 @@ std::cout << *it << '\n'; }

Output:

1
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/binary/index.html b/api/basic_json/binary/index.html index e7a8e9213..44cc9dd0a 100644 --- a/api/basic_json/binary/index.html +++ b/api/basic_json/binary/index.html @@ -24,4 +24,4 @@ std::cout << "type: " << j.type_name() << ", subtype: " << j.get_binary().subtype() << std::endl; }

Output:

type: binary, subtype: 42
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/binary_t/index.html b/api/basic_json/binary_t/index.html index b07716139..3def13d0a 100644 --- a/api/basic_json/binary_t/index.html +++ b/api/basic_json/binary_t/index.html @@ -10,4 +10,4 @@ std::cout << std::boolalpha << std::is_same<nlohmann::byte_container_with_subtype<std::vector<std::uint8_t>>, json::binary_t>::value << std::endl; }

Output:

true
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/boolean_t/index.html b/api/basic_json/boolean_t/index.html index 40fb4536e..515af116e 100644 --- a/api/basic_json/boolean_t/index.html +++ b/api/basic_json/boolean_t/index.html @@ -10,4 +10,4 @@ std::cout << std::boolalpha << std::is_same<bool, json::boolean_t>::value << std::endl; }

Output:

true
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/cbegin/index.html b/api/basic_json/cbegin/index.html index 0e062be3a..1275a8052 100644 --- a/api/basic_json/cbegin/index.html +++ b/api/basic_json/cbegin/index.html @@ -16,4 +16,4 @@ std::cout << *it << '\n'; }

Output:

1
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/cbor_tag_handler_t/index.html b/api/basic_json/cbor_tag_handler_t/index.html index 19eabc3c1..49ef244d9 100644 --- a/api/basic_json/cbor_tag_handler_t/index.html +++ b/api/basic_json/cbor_tag_handler_t/index.html @@ -35,4 +35,4 @@

Output:

[json.exception.parse_error.112] parse error at byte 1: syntax error while parsing CBOR value: invalid byte: 0xD8
 {"bytes":[202,254,186,190],"subtype":null}
 {"bytes":[202,254,186,190],"subtype":66}
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/cend/index.html b/api/basic_json/cend/index.html index 6a3e5a8b9..18f2295cb 100644 --- a/api/basic_json/cend/index.html +++ b/api/basic_json/cend/index.html @@ -19,4 +19,4 @@ std::cout << *it << '\n'; }

Output:

5
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/clear/index.html b/api/basic_json/clear/index.html index 06ea5de69..1a849db11 100644 --- a/api/basic_json/clear/index.html +++ b/api/basic_json/clear/index.html @@ -41,4 +41,4 @@ {} [] "" -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/contains/index.html b/api/basic_json/contains/index.html index 8205a0bcc..191b1e333 100644 --- a/api/basic_json/contains/index.html +++ b/api/basic_json/contains/index.html @@ -101,4 +101,4 @@ false false false -

Version history

  1. Added in version 3.11.0.
  2. Added in version 3.6.0. Extended template KeyType to support comparable types in version 3.11.0.
  3. Added in version 3.7.0.
\ No newline at end of file +

Version history

  1. Added in version 3.11.0.
  2. Added in version 3.6.0. Extended template KeyType to support comparable types in version 3.11.0.
  3. Added in version 3.7.0.
\ No newline at end of file diff --git a/api/basic_json/count/index.html b/api/basic_json/count/index.html index d1353fa09..bdeb91ccf 100644 --- a/api/basic_json/count/index.html +++ b/api/basic_json/count/index.html @@ -46,4 +46,4 @@ }

Output:

number of elements with key "two": 1
 number of elements with key "three": 0
-

Version history

  1. Added in version 3.11.0.
  2. Added in version 1.0.0. Changed parameter key type to KeyType&& in version 3.11.0.
\ No newline at end of file +

Version history

  1. Added in version 3.11.0.
  2. Added in version 1.0.0. Changed parameter key type to KeyType&& in version 3.11.0.
\ No newline at end of file diff --git a/api/basic_json/crbegin/index.html b/api/basic_json/crbegin/index.html index 38e8e1e74..3c77efda6 100644 --- a/api/basic_json/crbegin/index.html +++ b/api/basic_json/crbegin/index.html @@ -16,4 +16,4 @@ std::cout << *it << '\n'; }

Output:

5
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/crend/index.html b/api/basic_json/crend/index.html index 28de86769..ea1391fbd 100644 --- a/api/basic_json/crend/index.html +++ b/api/basic_json/crend/index.html @@ -19,4 +19,4 @@ std::cout << *it << '\n'; }

Output:

1
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/default_object_comparator_t/index.html b/api/basic_json/default_object_comparator_t/index.html index 911e96278..cdbcd5f87 100644 --- a/api/basic_json/default_object_comparator_t/index.html +++ b/api/basic_json/default_object_comparator_t/index.html @@ -14,4 +14,4 @@ }

Output:

one < two : true
 three < four : false
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/diff/index.html b/api/basic_json/diff/index.html index 81ae8c92a..4000e48c1 100644 --- a/api/basic_json/diff/index.html +++ b/api/basic_json/diff/index.html @@ -63,4 +63,4 @@ "world" ] } -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/dump/index.html b/api/basic_json/dump/index.html index 1f938596f..ecc91e20a 100644 --- a/api/basic_json/dump/index.html +++ b/api/basic_json/dump/index.html @@ -105,4 +105,4 @@ [json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9 string with replaced invalid characters: "ä�ü" string with ignored invalid characters: "äü" -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/emplace/index.html b/api/basic_json/emplace/index.html index 718510033..05b602fad 100644 --- a/api/basic_json/emplace/index.html +++ b/api/basic_json/emplace/index.html @@ -37,4 +37,4 @@ 3 true {"A":"a","B":"b"} "b" false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/emplace_back/index.html b/api/basic_json/emplace_back/index.html index eaa82fc1b..220a7c04d 100644 --- a/api/basic_json/emplace_back/index.html +++ b/api/basic_json/emplace_back/index.html @@ -28,4 +28,4 @@ null [1,2,3,4,5,6] ["first",["second","second","second"]] -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/empty/index.html b/api/basic_json/empty/index.html index 554217870..a081d0503 100644 --- a/api/basic_json/empty/index.html +++ b/api/basic_json/empty/index.html @@ -42,4 +42,4 @@ false true false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/end/index.html b/api/basic_json/end/index.html index 8fdd977bf..d0ee979cf 100644 --- a/api/basic_json/end/index.html +++ b/api/basic_json/end/index.html @@ -20,4 +20,4 @@ std::cout << *it << '\n'; }

Output:

5
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/end_pos/index.html b/api/basic_json/end_pos/index.html index 708e6af43..939cba804 100644 --- a/api/basic_json/end_pos/index.html +++ b/api/basic_json/end_pos/index.html @@ -101,4 +101,4 @@ Original string: 1 Parsed string: 1 -

The output shows the start/end positions of all the objects and fields in the JSON string.

See also

Version history

\ No newline at end of file +

The output shows the start/end positions of all the objects and fields in the JSON string.

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/erase/index.html b/api/basic_json/erase/index.html index e4b84f9d4..5abb594f4 100644 --- a/api/basic_json/erase/index.html +++ b/api/basic_json/erase/index.html @@ -148,4 +148,4 @@ std::cout << j_array << '\n'; }

Output:

[0,1,3,4,5]
-

Version history

  1. Added in version 1.0.0. Added support for binary types in version 3.8.0.
  2. Added in version 1.0.0. Added support for binary types in version 3.8.0.
  3. Added in version 1.0.0.
  4. Added in version 3.11.0.
  5. Added in version 1.0.0.
\ No newline at end of file +

Version history

  1. Added in version 1.0.0. Added support for binary types in version 3.8.0.
  2. Added in version 1.0.0. Added support for binary types in version 3.8.0.
  3. Added in version 1.0.0.
  4. Added in version 3.11.0.
  5. Added in version 1.0.0.
\ No newline at end of file diff --git a/api/basic_json/error_handler_t/index.html b/api/basic_json/error_handler_t/index.html index 312db06d6..71100ddf5 100644 --- a/api/basic_json/error_handler_t/index.html +++ b/api/basic_json/error_handler_t/index.html @@ -30,4 +30,4 @@

Output:

[json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9
 string with replaced invalid characters: "ä�ü"
 string with ignored invalid characters: "äü"
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/exception/index.html b/api/basic_json/exception/index.html index b1c7b7808..882c5bde3 100644 --- a/api/basic_json/exception/index.html +++ b/api/basic_json/exception/index.html @@ -49,4 +49,4 @@ }

Output:

message: [json.exception.out_of_range.403] key 'non-existing' not found
 exception id: 403
-

See also

List of exceptions

Version history

\ No newline at end of file +

See also

List of exceptions

Version history

\ No newline at end of file diff --git a/api/basic_json/find/index.html b/api/basic_json/find/index.html index e30d40135..0bf7701e6 100644 --- a/api/basic_json/find/index.html +++ b/api/basic_json/find/index.html @@ -55,4 +55,4 @@

Output:

"two" was found: true
 value at key "two": 2
 "three" was found: false
-

See also

Version history

  1. Added in version 3.11.0.
  2. Added in version 1.0.0. Changed to support comparable types in version 3.11.0.
\ No newline at end of file +

See also

Version history

  1. Added in version 3.11.0.
  2. Added in version 1.0.0. Changed to support comparable types in version 3.11.0.
\ No newline at end of file diff --git a/api/basic_json/flatten/index.html b/api/basic_json/flatten/index.html index 431e43b01..ca7451272 100644 --- a/api/basic_json/flatten/index.html +++ b/api/basic_json/flatten/index.html @@ -43,4 +43,4 @@ "/object/value": 42.99, "/pi": 3.141 } -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/from_bjdata/index.html b/api/basic_json/from_bjdata/index.html index 4f25631b1..44646f2c2 100644 --- a/api/basic_json/from_bjdata/index.html +++ b/api/basic_json/from_bjdata/index.html @@ -32,4 +32,4 @@ "compact": true, "schema": 0 } -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/from_bson/index.html b/api/basic_json/from_bson/index.html index 431668e2c..a9f899e04 100644 --- a/api/basic_json/from_bson/index.html +++ b/api/basic_json/from_bson/index.html @@ -33,4 +33,4 @@ "compact": true, "schema": 0 } -

See also

Version history

Deprecation

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file +

See also

Version history

Deprecation

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file diff --git a/api/basic_json/from_cbor/index.html b/api/basic_json/from_cbor/index.html index eb663ee6b..80f355dd5 100644 --- a/api/basic_json/from_cbor/index.html +++ b/api/basic_json/from_cbor/index.html @@ -35,4 +35,4 @@ "compact": true, "schema": 0 } -

Version history

Deprecation

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file +

Version history

Deprecation

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file diff --git a/api/basic_json/from_msgpack/index.html b/api/basic_json/from_msgpack/index.html index 6ad7aa263..9f8b47051 100644 --- a/api/basic_json/from_msgpack/index.html +++ b/api/basic_json/from_msgpack/index.html @@ -32,4 +32,4 @@ "compact": true, "schema": 0 } -

Version history

Deprecation

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file +

Version history

Deprecation

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file diff --git a/api/basic_json/from_ubjson/index.html b/api/basic_json/from_ubjson/index.html index 26e6e6680..65a91c2c5 100644 --- a/api/basic_json/from_ubjson/index.html +++ b/api/basic_json/from_ubjson/index.html @@ -32,4 +32,4 @@ "compact": true, "schema": 0 } -

Version history

Deprecation

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file +

Version history

Deprecation

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file diff --git a/api/basic_json/front/index.html b/api/basic_json/front/index.html index 326a23007..eb827a9d3 100644 --- a/api/basic_json/front/index.html +++ b/api/basic_json/front/index.html @@ -35,4 +35,4 @@ 1 1 "Hello, world" -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/get/index.html b/api/basic_json/get/index.html index ce5de5423..c85f323ba 100644 --- a/api/basic_json/get/index.html +++ b/api/basic_json/get/index.html @@ -103,4 +103,4 @@ }

Output:

17 17 17 17
 true
-

Version history

  1. Since version 2.1.0.
  2. Since version 2.1.0. Extended to work with other specializations of basic_json in version 3.2.0.
  3. Since version 1.0.0.
\ No newline at end of file +

Version history

  1. Since version 2.1.0.
  2. Since version 2.1.0. Extended to work with other specializations of basic_json in version 3.2.0.
  3. Since version 1.0.0.
\ No newline at end of file diff --git a/api/basic_json/get_allocator/index.html b/api/basic_json/get_allocator/index.html index 11f813a92..b4bc588f5 100644 --- a/api/basic_json/get_allocator/index.html +++ b/api/basic_json/get_allocator/index.html @@ -18,4 +18,4 @@ traits_t::deallocate(alloc, j, 1); }

Output:

"Hello, world!"
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/get_binary/index.html b/api/basic_json/get_binary/index.html index ba5b486e6..8991f9d94 100644 --- a/api/basic_json/get_binary/index.html +++ b/api/basic_json/get_binary/index.html @@ -18,4 +18,4 @@ std::cout << "type: " << j.type_name() << ", subtype: " << j.get_binary().subtype() << std::endl; }

Output:

type: binary, subtype: 42
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/get_ptr/index.html b/api/basic_json/get_ptr/index.html index 1c9a4adaa..b46ada3b9 100644 --- a/api/basic_json/get_ptr/index.html +++ b/api/basic_json/get_ptr/index.html @@ -44,4 +44,4 @@ value at 0x6000029fc088 is 1 }

Output:

17 17 17 17
 true
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/get_ref/index.html b/api/basic_json/get_ref/index.html index 7c1368796..fea17b152 100644 --- a/api/basic_json/get_ref/index.html +++ b/api/basic_json/get_ref/index.html @@ -32,4 +32,4 @@ }

Output:

17 17
 [json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is number
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/get_to/index.html b/api/basic_json/get_to/index.html index b43ba8727..294ca92a9 100644 --- a/api/basic_json/get_to/index.html +++ b/api/basic_json/get_to/index.html @@ -74,4 +74,4 @@ null: null boolean: true array: [1,2,3,4,5] -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/index.html b/api/basic_json/index.html index 6e4d05681..7e72bb59f 100644 --- a/api/basic_json/index.html +++ b/api/basic_json/index.html @@ -78,4 +78,4 @@ "pi": 3.141, "size": 8 } -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/input_format_t/index.html b/api/basic_json/input_format_t/index.html index f6fa16fab..201b819f8 100644 --- a/api/basic_json/input_format_t/index.html +++ b/api/basic_json/input_format_t/index.html @@ -123,4 +123,4 @@

Output:

binary(val=[...])
 
 result: true
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/insert/index.html b/api/basic_json/insert/index.html index a4c115cc7..32164a957 100644 --- a/api/basic_json/insert/index.html +++ b/api/basic_json/insert/index.html @@ -116,4 +116,4 @@

Output:

{"one":"eins","two":"zwei"}
 {"eleven":"elf","seventeen":"siebzehn"}
 {"eleven":"elf","one":"eins","seventeen":"siebzehn","two":"zwei"}
-

Version history

  1. Added in version 1.0.0.
  2. Added in version 1.0.0.
  3. Added in version 1.0.0.
  4. Added in version 1.0.0.
  5. Added in version 3.0.0.
\ No newline at end of file +

Version history

  1. Added in version 1.0.0.
  2. Added in version 1.0.0.
  3. Added in version 1.0.0.
  4. Added in version 1.0.0.
  5. Added in version 3.0.0.
\ No newline at end of file diff --git a/api/basic_json/invalid_iterator/index.html b/api/basic_json/invalid_iterator/index.html index 4db354ae8..b03dee835 100644 --- a/api/basic_json/invalid_iterator/index.html +++ b/api/basic_json/invalid_iterator/index.html @@ -50,4 +50,4 @@ }

Output:

message: [json.exception.invalid_iterator.207] cannot use key() for non-object iterators
 exception id: 207
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/is_array/index.html b/api/basic_json/is_array/index.html index f44f0a163..8d37a4a3f 100644 --- a/api/basic_json/is_array/index.html +++ b/api/basic_json/is_array/index.html @@ -38,4 +38,4 @@ true false false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/is_binary/index.html b/api/basic_json/is_binary/index.html index a7ab5a591..d46926ab8 100644 --- a/api/basic_json/is_binary/index.html +++ b/api/basic_json/is_binary/index.html @@ -38,4 +38,4 @@ false false true -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/is_boolean/index.html b/api/basic_json/is_boolean/index.html index 917da34e7..ab9fc0129 100644 --- a/api/basic_json/is_boolean/index.html +++ b/api/basic_json/is_boolean/index.html @@ -38,4 +38,4 @@ false false false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/is_discarded/index.html b/api/basic_json/is_discarded/index.html index 406f2f5ee..ebc657093 100644 --- a/api/basic_json/is_discarded/index.html +++ b/api/basic_json/is_discarded/index.html @@ -40,4 +40,4 @@ false false false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/is_null/index.html b/api/basic_json/is_null/index.html index 2a76f390e..1d31a3669 100644 --- a/api/basic_json/is_null/index.html +++ b/api/basic_json/is_null/index.html @@ -38,4 +38,4 @@ false false false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/is_number/index.html b/api/basic_json/is_number/index.html index 1ade381c3..af9bca09c 100644 --- a/api/basic_json/is_number/index.html +++ b/api/basic_json/is_number/index.html @@ -42,4 +42,4 @@ false false false -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/is_number_float/index.html b/api/basic_json/is_number_float/index.html index 9b7c6616a..92c9a9a92 100644 --- a/api/basic_json/is_number_float/index.html +++ b/api/basic_json/is_number_float/index.html @@ -38,4 +38,4 @@ false false false -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/is_number_integer/index.html b/api/basic_json/is_number_integer/index.html index af49eae57..6d7f76801 100644 --- a/api/basic_json/is_number_integer/index.html +++ b/api/basic_json/is_number_integer/index.html @@ -38,4 +38,4 @@ false false false -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/is_number_unsigned/index.html b/api/basic_json/is_number_unsigned/index.html index cf60814c8..79e5216d6 100644 --- a/api/basic_json/is_number_unsigned/index.html +++ b/api/basic_json/is_number_unsigned/index.html @@ -38,4 +38,4 @@ false false false -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/is_object/index.html b/api/basic_json/is_object/index.html index 31f557775..190cecea7 100644 --- a/api/basic_json/is_object/index.html +++ b/api/basic_json/is_object/index.html @@ -38,4 +38,4 @@ false false false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/is_primitive/index.html b/api/basic_json/is_primitive/index.html index 468bd3f6e..a2c97119c 100644 --- a/api/basic_json/is_primitive/index.html +++ b/api/basic_json/is_primitive/index.html @@ -42,4 +42,4 @@ false true true -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/is_string/index.html b/api/basic_json/is_string/index.html index 9e11fb9f8..e78ad3214 100644 --- a/api/basic_json/is_string/index.html +++ b/api/basic_json/is_string/index.html @@ -38,4 +38,4 @@ false true false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/is_structured/index.html b/api/basic_json/is_structured/index.html index 5f6a7a046..77f73e574 100644 --- a/api/basic_json/is_structured/index.html +++ b/api/basic_json/is_structured/index.html @@ -42,4 +42,4 @@ true false false -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/items/index.html b/api/basic_json/items/index.html index d4ccd3106..f48c08319 100644 --- a/api/basic_json/items/index.html +++ b/api/basic_json/items/index.html @@ -47,4 +47,4 @@ key: 2, value: 4 key: 3, value: 8 key: 4, value: 16 -

Version history

Deprecation

This function replaces the static function iterator_wrapper which was introduced in version 1.0.0, but has been deprecated in version 3.1.0. Function iterator_wrapper will be removed in version 4.0.0. Please replace all occurrences of iterator_wrapper(j) with j.items().

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file +

Version history

Deprecation

This function replaces the static function iterator_wrapper which was introduced in version 1.0.0, but has been deprecated in version 3.1.0. Function iterator_wrapper will be removed in version 4.0.0. Please replace all occurrences of iterator_wrapper(j) with j.items().

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file diff --git a/api/basic_json/json_base_class_t/index.html b/api/basic_json/json_base_class_t/index.html index 4c34902ae..f5f085edc 100644 --- a/api/basic_json/json_base_class_t/index.html +++ b/api/basic_json/json_base_class_t/index.html @@ -91,4 +91,4 @@ /null - metadata = 42 -> null /object - metadata = 21 -> {"uint":1} /object/uint - metadata = 42 -> 1 -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/json_serializer/index.html b/api/basic_json/json_serializer/index.html index 16cb4fbd1..a79d8bfcf 100644 --- a/api/basic_json/json_serializer/index.html +++ b/api/basic_json/json_serializer/index.html @@ -54,4 +54,4 @@ std::cout << p.name << " (" << p.age << ") lives in " << p.address << std::endl; }

Output:

Ned Flanders (60) lives in 744 Evergreen Terrace
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/max_size/index.html b/api/basic_json/max_size/index.html index 5305e8bfa..3de1739cf 100644 --- a/api/basic_json/max_size/index.html +++ b/api/basic_json/max_size/index.html @@ -31,4 +31,4 @@ 115292150460684697 576460752303423487 1 -

Note the output is platform-dependent.

Version history

\ No newline at end of file +

Note the output is platform-dependent.

Version history

\ No newline at end of file diff --git a/api/basic_json/merge_patch/index.html b/api/basic_json/merge_patch/index.html index 704818570..e572bd544 100644 --- a/api/basic_json/merge_patch/index.html +++ b/api/basic_json/merge_patch/index.html @@ -64,4 +64,4 @@ ], "title": "Hello!" } -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/meta/index.html b/api/basic_json/meta/index.html index daca6eb6d..b177f7e35 100644 --- a/api/basic_json/meta/index.html +++ b/api/basic_json/meta/index.html @@ -27,4 +27,4 @@ "string": "3.12.0" } } -

Note the output is platform-dependent.

See also

Version history

\ No newline at end of file +

Note the output is platform-dependent.

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/number_float_t/index.html b/api/basic_json/number_float_t/index.html index 2996aff9c..196228edc 100644 --- a/api/basic_json/number_float_t/index.html +++ b/api/basic_json/number_float_t/index.html @@ -10,4 +10,4 @@ std::cout << std::boolalpha << std::is_same<double, json::number_float_t>::value << std::endl; }

Output:

true
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/number_integer_t/index.html b/api/basic_json/number_integer_t/index.html index ab92a85d4..11c4f4ca8 100644 --- a/api/basic_json/number_integer_t/index.html +++ b/api/basic_json/number_integer_t/index.html @@ -10,4 +10,4 @@ std::cout << std::boolalpha << std::is_same<std::int64_t, json::number_integer_t>::value << std::endl; }

Output:

true
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/number_unsigned_t/index.html b/api/basic_json/number_unsigned_t/index.html index 244034c31..4a00b4f90 100644 --- a/api/basic_json/number_unsigned_t/index.html +++ b/api/basic_json/number_unsigned_t/index.html @@ -10,4 +10,4 @@ std::cout << std::boolalpha << std::is_same<std::uint64_t, json::number_unsigned_t>::value << std::endl; }

Output:

true
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/object/index.html b/api/basic_json/object/index.html index eca28bc42..059985328 100644 --- a/api/basic_json/object/index.html +++ b/api/basic_json/object/index.html @@ -31,4 +31,4 @@ {} {"one":1,"two":2} [json.exception.type_error.301] cannot create object from initializer list -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/object_comparator_t/index.html b/api/basic_json/object_comparator_t/index.html index 56424b783..c99314183 100644 --- a/api/basic_json/object_comparator_t/index.html +++ b/api/basic_json/object_comparator_t/index.html @@ -14,4 +14,4 @@ }

Output:

json::object_comparator_t("one", "two") = true
 json::object_comparator_t("three", "four") = false
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/object_t/index.html b/api/basic_json/object_t/index.html index 243b1a693..45dd50488 100644 --- a/api/basic_json/object_t/index.html +++ b/api/basic_json/object_t/index.html @@ -28,4 +28,4 @@ std::cout << std::boolalpha << std::is_same<std::map<json::string_t, json>, json::object_t>::value << std::endl; }

Output:

true
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/operator+=/index.html b/api/basic_json/operator+=/index.html index cc386653d..e0ce017e5 100644 --- a/api/basic_json/operator+=/index.html +++ b/api/basic_json/operator+=/index.html @@ -96,4 +96,4 @@ null {"four":4,"one":1,"three":3,"two":2} [["five",5]] -

See also

Version history

  1. Since version 1.0.0.
  2. Since version 1.0.0.
  3. Since version 2.0.0.
\ No newline at end of file +

See also

Version history

  1. Since version 1.0.0.
  2. Since version 1.0.0.
  3. Since version 2.0.0.
\ No newline at end of file diff --git a/api/basic_json/operator=/index.html b/api/basic_json/operator=/index.html index b2dcd356a..8e01df800 100644 --- a/api/basic_json/operator=/index.html +++ b/api/basic_json/operator=/index.html @@ -24,4 +24,4 @@ }

Output:

23
 23
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/operator[]/index.html b/api/basic_json/operator[]/index.html index be11c5688..63cde0978 100644 --- a/api/basic_json/operator[]/index.html +++ b/api/basic_json/operator[]/index.html @@ -283,4 +283,4 @@ "foo" [1,2] 2 -

See also

Version history

  1. Added in version 1.0.0.
  2. Added in version 1.0.0. Added overloads for T* key in version 1.1.0. Removed overloads for T* key (replaced by 3) in version 3.11.0.
  3. Added in version 3.11.0.
  4. Added in version 2.0.0.
\ No newline at end of file +

See also

Version history

  1. Added in version 1.0.0.
  2. Added in version 1.0.0. Added overloads for T* key in version 1.1.0. Removed overloads for T* key (replaced by 3) in version 3.11.0.
  3. Added in version 3.11.0.
  4. Added in version 2.0.0.
\ No newline at end of file diff --git a/api/basic_json/operator_ValueType/index.html b/api/basic_json/operator_ValueType/index.html index 5149cb089..976965bf9 100644 --- a/api/basic_json/operator_ValueType/index.html +++ b/api/basic_json/operator_ValueType/index.html @@ -76,4 +76,4 @@ boolean: true array: [1,2,3,4,5] [json.exception.type_error.302] type must be boolean, but is string -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/operator_eq/index.html b/api/basic_json/operator_eq/index.html index 070f0f060..f5e8f5aaa 100644 --- a/api/basic_json/operator_eq/index.html +++ b/api/basic_json/operator_eq/index.html @@ -115,4 +115,4 @@ 17 == nullptr false "foo" == nullptr false null == nullptr true -

Version history

  1. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
  2. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
\ No newline at end of file +

Version history

  1. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
  2. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
\ No newline at end of file diff --git a/api/basic_json/operator_ge/index.html b/api/basic_json/operator_ge/index.html index 8ad00bdad..5d6c377a9 100644 --- a/api/basic_json/operator_ge/index.html +++ b/api/basic_json/operator_ge/index.html @@ -34,4 +34,4 @@ {"A":"a","B":"b"} >= {"A":"a","B":"b"} true 17 >= 17.0000000000001 false "foo" >= "bar" true -

See also

Version history

  1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
  2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
\ No newline at end of file +

See also

Version history

  1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
  2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
\ No newline at end of file diff --git a/api/basic_json/operator_gt/index.html b/api/basic_json/operator_gt/index.html index 53c394aed..74b827a20 100644 --- a/api/basic_json/operator_gt/index.html +++ b/api/basic_json/operator_gt/index.html @@ -34,4 +34,4 @@ {"A":"a","B":"b"} > {"A":"a","B":"b"} false 17 > 17.0000000000001 false "foo" > "bar" true -

See also

Version history

  1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
  2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
\ No newline at end of file +

See also

Version history

  1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
  2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
\ No newline at end of file diff --git a/api/basic_json/operator_le/index.html b/api/basic_json/operator_le/index.html index 3888ef3d1..c5899e132 100644 --- a/api/basic_json/operator_le/index.html +++ b/api/basic_json/operator_le/index.html @@ -34,4 +34,4 @@ {"A":"a","B":"b"} <= {"A":"a","B":"b"} true 17 <= 17.0000000000001 true "foo" <= "bar" false -

See also

Version history

  1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
  2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
\ No newline at end of file +

See also

Version history

  1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
  2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
\ No newline at end of file diff --git a/api/basic_json/operator_lt/index.html b/api/basic_json/operator_lt/index.html index 2a5cb703b..24d311392 100644 --- a/api/basic_json/operator_lt/index.html +++ b/api/basic_json/operator_lt/index.html @@ -34,4 +34,4 @@ {"A":"a","B":"b"} == {"A":"a","B":"b"} false 17 == 17.0000000000001 true "foo" == "bar" false -

See also

Version history

  1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
  2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
\ No newline at end of file +

See also

Version history

  1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
  2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
\ No newline at end of file diff --git a/api/basic_json/operator_ne/index.html b/api/basic_json/operator_ne/index.html index 4a649025f..b9c2a0113 100644 --- a/api/basic_json/operator_ne/index.html +++ b/api/basic_json/operator_ne/index.html @@ -69,4 +69,4 @@ 17 != nullptr true "foo" != nullptr true null != nullptr false -

Version history

  1. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
  2. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
\ No newline at end of file +

Version history

  1. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
  2. Added in version 1.0.0. Added C++20 member functions in version 3.11.0.
\ No newline at end of file diff --git a/api/basic_json/operator_spaceship/index.html b/api/basic_json/operator_spaceship/index.html index 423fc7112..2cbc44de4 100644 --- a/api/basic_json/operator_spaceship/index.html +++ b/api/basic_json/operator_spaceship/index.html @@ -93,4 +93,4 @@ 17 <=> 17.000000 := equivalent 17 <=> nan := unordered "17" <=> 17 := greater -

See also

Version history

  1. Added in version 3.11.0.
  2. Added in version 3.11.0.
\ No newline at end of file +

See also

Version history

  1. Added in version 3.11.0.
  2. Added in version 3.11.0.
\ No newline at end of file diff --git a/api/basic_json/operator_value_t/index.html b/api/basic_json/operator_value_t/index.html index 5752b1ae1..3dae6b1ff 100644 --- a/api/basic_json/operator_value_t/index.html +++ b/api/basic_json/operator_value_t/index.html @@ -45,4 +45,4 @@ true true true -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/other_error/index.html b/api/basic_json/other_error/index.html index 4ef4f26ee..bfcdfce38 100644 --- a/api/basic_json/other_error/index.html +++ b/api/basic_json/other_error/index.html @@ -59,4 +59,4 @@ }

Output:

message: [json.exception.other_error.501] unsuccessful: {"op":"test","path":"/best_biscuit/name","value":"Choco Leibniz"}
 exception id: 501
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/out_of_range/index.html b/api/basic_json/out_of_range/index.html index 12b495c7f..224a60d43 100644 --- a/api/basic_json/out_of_range/index.html +++ b/api/basic_json/out_of_range/index.html @@ -49,4 +49,4 @@ }

Output:

message: [json.exception.out_of_range.401] array index 4 is out of range
 exception id: 401
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/parse/index.html b/api/basic_json/parse/index.html index ce80fa381..08f0afdf1 100644 --- a/api/basic_json/parse/index.html +++ b/api/basic_json/parse/index.html @@ -424,4 +424,4 @@ "Neptune" ] } -

See also

Version history

Deprecation

Overload (2) replaces calls to parse with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like parse({ptr, ptr+len}, ...); with parse(ptr, ptr+len, ...);.

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file +

See also

Version history

Deprecation

Overload (2) replaces calls to parse with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like parse({ptr, ptr+len}, ...); with parse(ptr, ptr+len, ...);.

You should be warned by your compiler with a -Wdeprecated-declarations warning if you are using a deprecated function.

\ No newline at end of file diff --git a/api/basic_json/parse_error/index.html b/api/basic_json/parse_error/index.html index a74648bfa..507ff8f45 100644 --- a/api/basic_json/parse_error/index.html +++ b/api/basic_json/parse_error/index.html @@ -50,4 +50,4 @@

Output:

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

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/parse_event_t/index.html b/api/basic_json/parse_event_t/index.html index b29044510..b05d6b2a3 100644 --- a/api/basic_json/parse_event_t/index.html +++ b/api/basic_json/parse_event_t/index.html @@ -6,4 +6,4 @@ key, value }; -

The parser callback distinguishes the following events:

Examples

Example when certain parse events are triggered

Version history

\ No newline at end of file +

The parser callback distinguishes the following events:

Examples

Example when certain parse events are triggered

Version history

\ No newline at end of file diff --git a/api/basic_json/parser_callback_t/index.html b/api/basic_json/parser_callback_t/index.html index 4eaaed882..c4ff7463a 100644 --- a/api/basic_json/parser_callback_t/index.html +++ b/api/basic_json/parser_callback_t/index.html @@ -83,4 +83,4 @@ "Width": 800 } } -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/patch/index.html b/api/basic_json/patch/index.html index 9c2da6de1..3fe5a9d15 100644 --- a/api/basic_json/patch/index.html +++ b/api/basic_json/patch/index.html @@ -43,4 +43,4 @@ "world" ] } -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/patch_inplace/index.html b/api/basic_json/patch_inplace/index.html index 763047d36..245bb607a 100644 --- a/api/basic_json/patch_inplace/index.html +++ b/api/basic_json/patch_inplace/index.html @@ -47,4 +47,4 @@ "world" ] } -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/push_back/index.html b/api/basic_json/push_back/index.html index 0b681feb7..74dca2c25 100644 --- a/api/basic_json/push_back/index.html +++ b/api/basic_json/push_back/index.html @@ -96,4 +96,4 @@ null {"four":4,"one":1,"three":3,"two":2} [["five",5]] -

See also

Version history

  1. Since version 1.0.0.
  2. Since version 1.0.0.
  3. Since version 2.0.0.
\ No newline at end of file +

See also

Version history

  1. Since version 1.0.0.
  2. Since version 1.0.0.
  3. Since version 2.0.0.
\ No newline at end of file diff --git a/api/basic_json/rbegin/index.html b/api/basic_json/rbegin/index.html index cfcd03b38..ad3ca6f08 100644 --- a/api/basic_json/rbegin/index.html +++ b/api/basic_json/rbegin/index.html @@ -17,4 +17,4 @@ std::cout << *it << '\n'; }

Output:

5
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/rend/index.html b/api/basic_json/rend/index.html index e80ca56b9..c51fdfe9d 100644 --- a/api/basic_json/rend/index.html +++ b/api/basic_json/rend/index.html @@ -20,4 +20,4 @@ std::cout << *it << '\n'; }

Output:

1
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/sax_parse/index.html b/api/basic_json/sax_parse/index.html index 13156c639..9b79cb43a 100644 --- a/api/basic_json/sax_parse/index.html +++ b/api/basic_json/sax_parse/index.html @@ -183,4 +183,4 @@ ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false -

Version history

Deprecation

Overload (2) replaces calls to sax_parse with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like sax_parse({ptr, ptr+len}); with sax_parse(ptr, ptr+len);.

\ No newline at end of file +

Version history

Deprecation

Overload (2) replaces calls to sax_parse with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like sax_parse({ptr, ptr+len}); with sax_parse(ptr, ptr+len);.

\ No newline at end of file diff --git a/api/basic_json/size/index.html b/api/basic_json/size/index.html index 86ac9ca00..325b54795 100644 --- a/api/basic_json/size/index.html +++ b/api/basic_json/size/index.html @@ -37,4 +37,4 @@ 5 0 1 -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/start_pos/index.html b/api/basic_json/start_pos/index.html index 3ea9e50cb..2a004ad9e 100644 --- a/api/basic_json/start_pos/index.html +++ b/api/basic_json/start_pos/index.html @@ -101,4 +101,4 @@ Original string: 1 Parsed string: 1 -

The output shows the start/end positions of all the objects and fields in the JSON string.

See also

Version history

\ No newline at end of file +

The output shows the start/end positions of all the objects and fields in the JSON string.

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/std_hash/index.html b/api/basic_json/std_hash/index.html index 8028f694c..b83f63b3b 100644 --- a/api/basic_json/std_hash/index.html +++ b/api/basic_json/std_hash/index.html @@ -28,4 +28,4 @@ hash({}) = 2654435832 hash([]) = 2654435899 hash({"hello": "world"}) = 4469488738203676328 -

Note the output is platform-dependent.

Version history

\ No newline at end of file +

Note the output is platform-dependent.

Version history

\ No newline at end of file diff --git a/api/basic_json/std_swap/index.html b/api/basic_json/std_swap/index.html index b4247ecf2..d6d1cf9fa 100644 --- a/api/basic_json/std_swap/index.html +++ b/api/basic_json/std_swap/index.html @@ -26,4 +26,4 @@ }

Output:

j1 = {"one":1,"two":2} | j2 = [1,2,4,8,16]
 j1 = [1,2,4,8,16] | j2 = {"one":1,"two":2}
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/string_t/index.html b/api/basic_json/string_t/index.html index 783ce394e..b182bb087 100644 --- a/api/basic_json/string_t/index.html +++ b/api/basic_json/string_t/index.html @@ -10,4 +10,4 @@ std::cout << std::boolalpha << std::is_same<std::string, json::string_t>::value << std::endl; }

Output:

true
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/swap/index.html b/api/basic_json/swap/index.html index 4e97204d4..4ccd2a0b5 100644 --- a/api/basic_json/swap/index.html +++ b/api/basic_json/swap/index.html @@ -126,4 +126,4 @@ }

Output:

value = {"bytes":[4,5,6],"subtype":null}
 binary = {"bytes":[1,2,3],"subtype":null}
-

See also

Version history

  1. Since version 1.0.0.
  2. Since version 1.0.0.
  3. Since version 1.0.0.
  4. Since version 1.0.0.
  5. Since version 1.0.0.
  6. Since version 3.8.0.
  7. Since version 3.8.0.
\ No newline at end of file +

See also

Version history

  1. Since version 1.0.0.
  2. Since version 1.0.0.
  3. Since version 1.0.0.
  4. Since version 1.0.0.
  5. Since version 1.0.0.
  6. Since version 3.8.0.
  7. Since version 3.8.0.
\ No newline at end of file diff --git a/api/basic_json/to_bjdata/index.html b/api/basic_json/to_bjdata/index.html index 7c0d0cda6..214d4ebb3 100644 --- a/api/basic_json/to_bjdata/index.html +++ b/api/basic_json/to_bjdata/index.html @@ -79,4 +79,4 @@ [i1i2i3i4i5i6i7i8] [#i8i1i2i3i4i5i6i7i8 [$i#i812345678 -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/to_bson/index.html b/api/basic_json/to_bson/index.html index f7506f5c8..103a69b93 100644 --- a/api/basic_json/to_bson/index.html +++ b/api/basic_json/to_bson/index.html @@ -27,4 +27,4 @@ std::cout << std::endl; }

Output:

0x1b 0x00 0x00 0x00 0x08 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0x00 0x01 0x10 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 0x00 0x00 0x00 0x00 0x00 
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/to_cbor/index.html b/api/basic_json/to_cbor/index.html index 4b598da84..c9478672f 100644 --- a/api/basic_json/to_cbor/index.html +++ b/api/basic_json/to_cbor/index.html @@ -27,4 +27,4 @@ std::cout << std::endl; }

Output:

0xa2 0x67 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xf5 0x66 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/to_msgpack/index.html b/api/basic_json/to_msgpack/index.html index 8a42d6e81..4cd488fb3 100644 --- a/api/basic_json/to_msgpack/index.html +++ b/api/basic_json/to_msgpack/index.html @@ -27,4 +27,4 @@ std::cout << std::endl; }

Output:

0x82 0xa7 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xc3 0xa6 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/to_string/index.html b/api/basic_json/to_string/index.html index 7c3dd2a12..0ca941f50 100644 --- a/api/basic_json/to_string/index.html +++ b/api/basic_json/to_string/index.html @@ -28,4 +28,4 @@

Output:

{"one":1,"two":2}
 
 42
-

See also

Version history

Added in version 3.7.0.

\ No newline at end of file +

See also

Version history

Added in version 3.7.0.

\ No newline at end of file diff --git a/api/basic_json/to_ubjson/index.html b/api/basic_json/to_ubjson/index.html index cffe601ec..2ab991a79 100644 --- a/api/basic_json/to_ubjson/index.html +++ b/api/basic_json/to_ubjson/index.html @@ -76,4 +76,4 @@ [i1i2i3i4i5i6i7i8] [#i8i1i2i3i4i5i6i7i8 [$i#i812345678 -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/type/index.html b/api/basic_json/type/index.html index 75941c1cf..7f914540c 100644 --- a/api/basic_json/type/index.html +++ b/api/basic_json/type/index.html @@ -35,4 +35,4 @@ true true true -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/type_error/index.html b/api/basic_json/type_error/index.html index a37da28a9..880622616 100644 --- a/api/basic_json/type_error/index.html +++ b/api/basic_json/type_error/index.html @@ -49,4 +49,4 @@ }

Output:

message: [json.exception.type_error.308] cannot use push_back() with string
 exception id: 308
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/type_name/index.html b/api/basic_json/type_name/index.html index 5cde641a7..61137e907 100644 --- a/api/basic_json/type_name/index.html +++ b/api/basic_json/type_name/index.html @@ -34,4 +34,4 @@ {"one":1,"two":2} is an object [1,2,4,8,16] is an array "Hello, world" is a string -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/unflatten/index.html b/api/basic_json/unflatten/index.html index ae12d4320..12d33f406 100644 --- a/api/basic_json/unflatten/index.html +++ b/api/basic_json/unflatten/index.html @@ -43,4 +43,4 @@ }, "pi": 3.141 } -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/basic_json/update/index.html b/api/basic_json/update/index.html index 42fe2badd..fa914fed1 100644 --- a/api/basic_json/update/index.html +++ b/api/basic_json/update/index.html @@ -110,4 +110,4 @@ "active": true, "name": {"de": "Maus", "en": "mouse", "es": "ratón"} } -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/value/index.html b/api/basic_json/value/index.html index 1786c4d4a..54ad4f466 100644 --- a/api/basic_json/value/index.html +++ b/api/basic_json/value/index.html @@ -136,4 +136,4 @@ << " " << v_string << " " << v_boolean << "\n"; }

Output:

1 42.23 oops false
-

See also

Version history

  1. Added in version 1.0.0. Changed parameter default_value type from const ValueType& to ValueType&& in version 3.11.0.
  2. Added in version 3.11.0. Made ValueType the first template parameter in version 3.11.2.
  3. Added in version 2.0.2.
\ No newline at end of file +

See also

Version history

  1. Added in version 1.0.0. Changed parameter default_value type from const ValueType& to ValueType&& in version 3.11.0.
  2. Added in version 3.11.0. Made ValueType the first template parameter in version 3.11.2.
  3. Added in version 2.0.2.
\ No newline at end of file diff --git a/api/basic_json/value_t/index.html b/api/basic_json/value_t/index.html index 73ffa6bd0..5e624c2bb 100644 --- a/api/basic_json/value_t/index.html +++ b/api/basic_json/value_t/index.html @@ -46,4 +46,4 @@ true true true -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/basic_json/~basic_json/index.html b/api/basic_json/~basic_json/index.html index 74f7c3d9f..6a01db4b6 100644 --- a/api/basic_json/~basic_json/index.html +++ b/api/basic_json/~basic_json/index.html @@ -1,2 +1,2 @@ (Destructor) - JSON for Modern C++
Skip to content

nlohmann::basic_json::~basic_json

~basic_json() noexcept;
-

Destroys the JSON value and frees all allocated memory.

Exception safety

No-throw guarantee: this member function never throws exceptions.

Complexity

Linear.

Version history

  • Added in version 1.0.0.
\ No newline at end of file +

Destroys the JSON value and frees all allocated memory.

Exception safety

No-throw guarantee: this member function never throws exceptions.

Complexity

Linear.

Version history

\ No newline at end of file diff --git a/api/byte_container_with_subtype/byte_container_with_subtype/index.html b/api/byte_container_with_subtype/byte_container_with_subtype/index.html index 7d5cca793..4e4940614 100644 --- a/api/byte_container_with_subtype/byte_container_with_subtype/index.html +++ b/api/byte_container_with_subtype/byte_container_with_subtype/index.html @@ -34,4 +34,4 @@

Output:

{"bytes":[],"subtype":null}
 {"bytes":[202,254,186,190],"subtype":null}
 {"bytes":[202,254,186,190],"subtype":42}
-

Version history

Since version 3.8.0.

\ No newline at end of file +

Version history

Since version 3.8.0.

\ No newline at end of file diff --git a/api/byte_container_with_subtype/clear_subtype/index.html b/api/byte_container_with_subtype/clear_subtype/index.html index ea77b5a3b..8b7316d07 100644 --- a/api/byte_container_with_subtype/clear_subtype/index.html +++ b/api/byte_container_with_subtype/clear_subtype/index.html @@ -22,4 +22,4 @@ }

Output:

before calling clear_subtype(): {"bytes":[202,254,186,190],"subtype":42}
 after calling clear_subtype(): {"bytes":[202,254,186,190],"subtype":null}
-

Version history

Since version 3.8.0.

\ No newline at end of file +

Version history

Since version 3.8.0.

\ No newline at end of file diff --git a/api/byte_container_with_subtype/has_subtype/index.html b/api/byte_container_with_subtype/has_subtype/index.html index 8fc7b02f7..a2e66cf89 100644 --- a/api/byte_container_with_subtype/has_subtype/index.html +++ b/api/byte_container_with_subtype/has_subtype/index.html @@ -20,4 +20,4 @@ }

Output:

c1.has_subtype() = false
 c2.has_subtype() = true
-

Version history

Since version 3.8.0.

\ No newline at end of file +

Version history

Since version 3.8.0.

\ No newline at end of file diff --git a/api/byte_container_with_subtype/index.html b/api/byte_container_with_subtype/index.html index 9978b83e3..904002dd2 100644 --- a/api/byte_container_with_subtype/index.html +++ b/api/byte_container_with_subtype/index.html @@ -1,3 +1,3 @@ Overview - JSON for Modern C++
Skip to content

nlohmann::byte_container_with_subtype

template<typename BinaryType>
 class byte_container_with_subtype : public BinaryType;
-

This type extends the template parameter BinaryType provided to basic_json with a subtype used by BSON and MessagePack. This type exists so that the user does not have to specify a type themselves with a specific naming scheme in order to override the binary type.

Template parameters

BinaryType
container to store bytes (std::vector<std::uint8_t> by default)

Member types

  • container_type - the type of the underlying container (BinaryType)
  • subtype_type - the type of the subtype (std::uint64_t)

Member functions

Version history

  • Added in version 3.8.0.
  • Changed the type of subtypes to std::uint64_t in 3.10.0.
\ No newline at end of file +

This type extends the template parameter BinaryType provided to basic_json with a subtype used by BSON and MessagePack. This type exists so that the user does not have to specify a type themselves with a specific naming scheme in order to override the binary type.

Template parameters

BinaryType
container to store bytes (std::vector<std::uint8_t> by default)

Member types

Member functions

Version history

\ No newline at end of file diff --git a/api/byte_container_with_subtype/set_subtype/index.html b/api/byte_container_with_subtype/set_subtype/index.html index ef1884692..c167afc41 100644 --- a/api/byte_container_with_subtype/set_subtype/index.html +++ b/api/byte_container_with_subtype/set_subtype/index.html @@ -23,4 +23,4 @@ }

Output:

before calling set_subtype(42): {"bytes":[202,254,186,190],"subtype":null}
 after calling set_subtype(42): {"bytes":[202,254,186,190],"subtype":42}
-

Version history

Since version 3.8.0.

\ No newline at end of file +

Version history

Since version 3.8.0.

\ No newline at end of file diff --git a/api/byte_container_with_subtype/subtype/index.html b/api/byte_container_with_subtype/subtype/index.html index c6aaa2dc3..da87274c4 100644 --- a/api/byte_container_with_subtype/subtype/index.html +++ b/api/byte_container_with_subtype/subtype/index.html @@ -23,4 +23,4 @@ }

Output:

c1.subtype() = 18446744073709551615
 c2.subtype() = 42
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json/index.html b/api/json/index.html index 86ce5ff6a..2499550ae 100644 --- a/api/json/index.html +++ b/api/json/index.html @@ -65,4 +65,4 @@ "pi": 3.141, "size": 8 } -

Version history

Since version 1.0.0.

\ No newline at end of file +

Version history

Since version 1.0.0.

\ No newline at end of file diff --git a/api/json_pointer/back/index.html b/api/json_pointer/back/index.html index 8e8d0e93d..1cdfd7351 100644 --- a/api/json_pointer/back/index.html +++ b/api/json_pointer/back/index.html @@ -16,4 +16,4 @@ }

Output:

last reference token of "/foo" is "foo"
 last reference token of "/foo/0" is "0"
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_pointer/empty/index.html b/api/json_pointer/empty/index.html index 3daba422c..2981bbca5 100644 --- a/api/json_pointer/empty/index.html +++ b/api/json_pointer/empty/index.html @@ -23,4 +23,4 @@ "": true "/foo": false "/foo/0": false -

Version history

Added in version 3.6.0.

\ No newline at end of file +

Version history

Added in version 3.6.0.

\ No newline at end of file diff --git a/api/json_pointer/index.html b/api/json_pointer/index.html index 1cfe50f66..413d3fdb7 100644 --- a/api/json_pointer/index.html +++ b/api/json_pointer/index.html @@ -1,3 +1,3 @@ Overview - JSON for Modern C++
Skip to content

nlohmann::json_pointer

template<typename RefStringType>
 class json_pointer;
-

A JSON pointer defines a string syntax for identifying a specific value within a JSON document. It can be used with functions at and operator[]. Furthermore, JSON pointers are the base for JSON patches.

Template parameters

RefStringType
the string type used for the reference tokens making up the JSON pointer

Deprecation

For backwards compatibility RefStringType may also be a specialization of basic_json in which case string_t will be deduced as basic_json::string_t. This feature is deprecated and may be removed in a future major version.

Member types

  • string_t - the string type used for the reference tokens

Member functions

Literals

See also

Version history

  • Added in version 2.0.0.
  • Changed template parameter from basic_json to string type in version 3.11.0.
\ No newline at end of file +

A JSON pointer defines a string syntax for identifying a specific value within a JSON document. It can be used with functions at and operator[]. Furthermore, JSON pointers are the base for JSON patches.

Template parameters

RefStringType
the string type used for the reference tokens making up the JSON pointer

Deprecation

For backwards compatibility RefStringType may also be a specialization of basic_json in which case string_t will be deduced as basic_json::string_t. This feature is deprecated and may be removed in a future major version.

Member types

Member functions

Literals

See also

Version history

\ No newline at end of file diff --git a/api/json_pointer/json_pointer/index.html b/api/json_pointer/json_pointer/index.html index b8afc077b..84a231cf0 100644 --- a/api/json_pointer/json_pointer/index.html +++ b/api/json_pointer/json_pointer/index.html @@ -49,4 +49,4 @@

Output:

[json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'foo'
 [json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'
 [json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_pointer/operator_eq/index.html b/api/json_pointer/operator_eq/index.html index edac19079..308562087 100644 --- a/api/json_pointer/operator_eq/index.html +++ b/api/json_pointer/operator_eq/index.html @@ -82,4 +82,4 @@ "" == "": true "/foo" == "/foo": true "bar" == "/foo": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar' -

Version history

  1. Added in version 2.1.0. Added C++20 member functions in version 3.11.2.
  2. Added for backward compatibility and deprecated in version 3.11.2.
\ No newline at end of file +

Version history

  1. Added in version 2.1.0. Added C++20 member functions in version 3.11.2.
  2. Added for backward compatibility and deprecated in version 3.11.2.
\ No newline at end of file diff --git a/api/json_pointer/operator_ne/index.html b/api/json_pointer/operator_ne/index.html index d47fbaebe..5c8858e12 100644 --- a/api/json_pointer/operator_ne/index.html +++ b/api/json_pointer/operator_ne/index.html @@ -72,4 +72,4 @@ "" != "": false "/foo" != "/foo": false "bar" != "/foo": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar' -

Version history

  1. Added in version 2.1.0.
  2. Added for backward compatibility and deprecated in version 3.11.2.
\ No newline at end of file +

Version history

  1. Added in version 2.1.0.
  2. Added for backward compatibility and deprecated in version 3.11.2.
\ No newline at end of file diff --git a/api/json_pointer/operator_slash/index.html b/api/json_pointer/operator_slash/index.html index 74d2c8b15..f6b6c8f37 100644 --- a/api/json_pointer/operator_slash/index.html +++ b/api/json_pointer/operator_slash/index.html @@ -28,4 +28,4 @@

Output:

"/foo/bar/baz"
 "/foo/fob"
 "/foo/42"
-

Version history

  1. Added in version 3.6.0.
  2. Added in version 3.6.0. Changed type of token to string_t in version 3.11.0.
  3. Added in version 3.6.0.
\ No newline at end of file +

Version history

  1. Added in version 3.6.0.
  2. Added in version 3.6.0. Changed type of token to string_t in version 3.11.0.
  3. Added in version 3.6.0.
\ No newline at end of file diff --git a/api/json_pointer/operator_slasheq/index.html b/api/json_pointer/operator_slasheq/index.html index e26bbcd99..ad05bc677 100644 --- a/api/json_pointer/operator_slasheq/index.html +++ b/api/json_pointer/operator_slasheq/index.html @@ -33,4 +33,4 @@ "/foo/bar/baz" "/foo/bar/baz/fob" "/foo/bar/baz/fob/42" -

Version history

  1. Added in version 3.6.0.
  2. Added in version 3.6.0. Changed type of token to string_t in version 3.11.0.
  3. Added in version 3.6.0.
\ No newline at end of file +

Version history

  1. Added in version 3.6.0.
  2. Added in version 3.6.0. Changed type of token to string_t in version 3.11.0.
  3. Added in version 3.6.0.
\ No newline at end of file diff --git a/api/json_pointer/operator_string_t/index.html b/api/json_pointer/operator_string_t/index.html index 8d1f5c90b..b8654cccf 100644 --- a/api/json_pointer/operator_string_t/index.html +++ b/api/json_pointer/operator_string_t/index.html @@ -24,4 +24,4 @@ }

Output:

/foo/0
 /a~1b
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/json_pointer/parent_pointer/index.html b/api/json_pointer/parent_pointer/index.html index 073410f2e..6b94b9e28 100644 --- a/api/json_pointer/parent_pointer/index.html +++ b/api/json_pointer/parent_pointer/index.html @@ -20,4 +20,4 @@

Output:

parent of "" is ""
 parent of "/foo" is ""
 parent of "/foo/0" is "/foo"
-

Version history

Added in version 3.6.0.

\ No newline at end of file +

Version history

Added in version 3.6.0.

\ No newline at end of file diff --git a/api/json_pointer/pop_back/index.html b/api/json_pointer/pop_back/index.html index 74407108c..ef5bfdadf 100644 --- a/api/json_pointer/pop_back/index.html +++ b/api/json_pointer/pop_back/index.html @@ -24,4 +24,4 @@ "/foo/bar" "/foo" "" -

Version history

Added in version 3.6.0.

\ No newline at end of file +

Version history

Added in version 3.6.0.

\ No newline at end of file diff --git a/api/json_pointer/push_back/index.html b/api/json_pointer/push_back/index.html index 154bb9b17..8265725ba 100644 --- a/api/json_pointer/push_back/index.html +++ b/api/json_pointer/push_back/index.html @@ -26,4 +26,4 @@ "/foo" "/foo/0" "/foo/0/bar" -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_pointer/string_t/index.html b/api/json_pointer/string_t/index.html index 79857f746..9422822a7 100644 --- a/api/json_pointer/string_t/index.html +++ b/api/json_pointer/string_t/index.html @@ -14,4 +14,4 @@ }

Output:

This is a string.
 true
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_pointer/to_string/index.html b/api/json_pointer/to_string/index.html index b815e1503..86054e5ce 100644 --- a/api/json_pointer/to_string/index.html +++ b/api/json_pointer/to_string/index.html @@ -46,4 +46,4 @@ "/k"l" "/ " "/m~0n" -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_sax/binary/index.html b/api/json_sax/binary/index.html index 18334326e..2ff877387 100644 --- a/api/json_sax/binary/index.html +++ b/api/json_sax/binary/index.html @@ -116,4 +116,4 @@

Output:

binary(val=[...])
 
 result: true
-

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_sax/boolean/index.html b/api/json_sax/boolean/index.html index f96338079..0c4b1b527 100644 --- a/api/json_sax/boolean/index.html +++ b/api/json_sax/boolean/index.html @@ -167,4 +167,4 @@ ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_sax/end_array/index.html b/api/json_sax/end_array/index.html index f5f22f88e..912965617 100644 --- a/api/json_sax/end_array/index.html +++ b/api/json_sax/end_array/index.html @@ -167,4 +167,4 @@ ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_sax/end_object/index.html b/api/json_sax/end_object/index.html index cb02c1dcc..2c5effbd2 100644 --- a/api/json_sax/end_object/index.html +++ b/api/json_sax/end_object/index.html @@ -167,4 +167,4 @@ ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_sax/index.html b/api/json_sax/index.html index 1d85e8aa0..70b00f685 100644 --- a/api/json_sax/index.html +++ b/api/json_sax/index.html @@ -1,3 +1,3 @@ Overview - JSON for Modern C++
Skip to content

nlohmann::json_sax

template<typename BasicJsonType>
 struct json_sax;
-

This class describes the SAX interface used by sax_parse. Each function is called in different situations while the input is parsed. The boolean return value informs the parser whether to continue processing the input.

Template parameters

BasicJsonType
a specialization of basic_json

Member types

Member functions

  • binary (virtual) - a binary value was read
  • boolean (virtual) - a boolean value was read
  • end_array (virtual) - the end of an array was read
  • end_object (virtual) - the end of an object was read
  • key (virtual) - an object key was read
  • null (virtual) - a null value was read
  • number_float (virtual) - a floating-point number was read
  • number_integer (virtual) - an integer number was read
  • number_unsigned (virtual) - an unsigned integer number was read
  • parse_error (virtual) - a parse error occurred
  • start_array (virtual) - the beginning of an array was read
  • start_object (virtual) - the beginning of an object was read
  • string (virtual) - a string value was read

Version history

  • Added in version 3.2.0.
  • Support for binary values (binary_t, binary) added in version 3.8.0.
\ No newline at end of file +

This class describes the SAX interface used by sax_parse. Each function is called in different situations while the input is parsed. The boolean return value informs the parser whether to continue processing the input.

Template parameters

BasicJsonType
a specialization of basic_json

Member types

Member functions

Version history

\ No newline at end of file diff --git a/api/json_sax/key/index.html b/api/json_sax/key/index.html index 9af7cad36..d913184ef 100644 --- a/api/json_sax/key/index.html +++ b/api/json_sax/key/index.html @@ -167,4 +167,4 @@ ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_sax/null/index.html b/api/json_sax/null/index.html index 5fe1ac4a0..f7bb4abaa 100644 --- a/api/json_sax/null/index.html +++ b/api/json_sax/null/index.html @@ -167,4 +167,4 @@ ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_sax/number_float/index.html b/api/json_sax/number_float/index.html index 621a7b2cf..dcdc1c699 100644 --- a/api/json_sax/number_float/index.html +++ b/api/json_sax/number_float/index.html @@ -167,4 +167,4 @@ ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_sax/number_integer/index.html b/api/json_sax/number_integer/index.html index b2d7a8b3c..259790ae0 100644 --- a/api/json_sax/number_integer/index.html +++ b/api/json_sax/number_integer/index.html @@ -167,4 +167,4 @@ ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_sax/number_unsigned/index.html b/api/json_sax/number_unsigned/index.html index 56b81647c..edecb999d 100644 --- a/api/json_sax/number_unsigned/index.html +++ b/api/json_sax/number_unsigned/index.html @@ -167,4 +167,4 @@ ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_sax/parse_error/index.html b/api/json_sax/parse_error/index.html index 30ea955ec..73b0cc9d1 100644 --- a/api/json_sax/parse_error/index.html +++ b/api/json_sax/parse_error/index.html @@ -169,4 +169,4 @@ ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_sax/start_array/index.html b/api/json_sax/start_array/index.html index 84d44b1a3..3cafc353a 100644 --- a/api/json_sax/start_array/index.html +++ b/api/json_sax/start_array/index.html @@ -167,4 +167,4 @@ ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_sax/start_object/index.html b/api/json_sax/start_object/index.html index c606cda7d..5c1d8eef7 100644 --- a/api/json_sax/start_object/index.html +++ b/api/json_sax/start_object/index.html @@ -167,4 +167,4 @@ ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_sax/string/index.html b/api/json_sax/string/index.html index 8554297e5..5c2ae6b3d 100644 --- a/api/json_sax/string/index.html +++ b/api/json_sax/string/index.html @@ -167,4 +167,4 @@ ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/macros/index.html b/api/macros/index.html index 8ecec087a..a61b4143f 100644 --- a/api/macros/index.html +++ b/api/macros/index.html @@ -1 +1 @@ - Overview - JSON for Modern C++
Skip to content

Macros

Some aspects of the library can be configured by defining preprocessor macros before including the json.hpp header. See also the macro overview page.

Runtime assertions

Exceptions

Language support

Library version

Library namespace

Type conversions

Comparison behavior

Serialization/deserialization macros

Enums

Classes and structs

\ No newline at end of file + Overview - JSON for Modern C++
Skip to content

Macros

Some aspects of the library can be configured by defining preprocessor macros before including the json.hpp header. See also the macro overview page.

Runtime assertions

Exceptions

Language support

Library version

Library namespace

Type conversions

Comparison behavior

Serialization/deserialization macros

Enums

Classes and structs

\ No newline at end of file diff --git a/api/macros/json_assert/index.html b/api/macros/json_assert/index.html index 8c4379716..5844f0c0f 100644 --- a/api/macros/json_assert/index.html +++ b/api/macros/json_assert/index.html @@ -24,4 +24,4 @@ auto v = j["missing"]; }

Output:

assertion error in operator[]
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/macros/json_diagnostic_positions/index.html b/api/macros/json_diagnostic_positions/index.html index 50a184655..3105b0d2b 100644 --- a/api/macros/json_diagnostic_positions/index.html +++ b/api/macros/json_diagnostic_positions/index.html @@ -165,4 +165,4 @@ Parsed string: }

Output:

[json.exception.type_error.302] (/address/housenumber) (bytes 92-95) type must be number, but is string
 
The output shows the exception with diagnostic path info and start/end positions.
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/macros/json_diagnostics/index.html b/api/macros/json_diagnostics/index.html index ce610e428..f6d967b9a 100644 --- a/api/macros/json_diagnostics/index.html +++ b/api/macros/json_diagnostics/index.html @@ -75,4 +75,4 @@ } }

Output:

[json.exception.type_error.302] (bytes 92-95) type must be number, but is string
-
The output shows the exception with start/end positions only.

See also

Version history

\ No newline at end of file + The output shows the exception with start/end positions only.

See also

Version history

\ No newline at end of file diff --git a/api/macros/json_disable_enum_serialization/index.html b/api/macros/json_disable_enum_serialization/index.html index a2fd90e24..5ad69b4d0 100644 --- a/api/macros/json_disable_enum_serialization/index.html +++ b/api/macros/json_disable_enum_serialization/index.html @@ -89,4 +89,4 @@ // uses user-defined from_json function Choice ch = j.get<Choice>(); } -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/macros/json_has_cpp_11/index.html b/api/macros/json_has_cpp_11/index.html index b090e2a92..a464595ce 100644 --- a/api/macros/json_has_cpp_11/index.html +++ b/api/macros/json_has_cpp_11/index.html @@ -6,4 +6,4 @@ #include <nlohmann/json.hpp> ... -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/macros/json_has_filesystem/index.html b/api/macros/json_has_filesystem/index.html index e16f8b18a..ff339b6b7 100644 --- a/api/macros/json_has_filesystem/index.html +++ b/api/macros/json_has_filesystem/index.html @@ -4,4 +4,4 @@ #include <nlohmann/json.hpp> ... -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/macros/json_has_ranges/index.html b/api/macros/json_has_ranges/index.html index 7ba9d02e3..1af9eb05c 100644 --- a/api/macros/json_has_ranges/index.html +++ b/api/macros/json_has_ranges/index.html @@ -3,4 +3,4 @@ #include <nlohmann/json.hpp> ... -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/macros/json_has_static_rtti/index.html b/api/macros/json_has_static_rtti/index.html index 584dff5bb..410743b1c 100644 --- a/api/macros/json_has_static_rtti/index.html +++ b/api/macros/json_has_static_rtti/index.html @@ -3,4 +3,4 @@ #include <nlohmann/json.hpp> ... -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/macros/json_has_three_way_comparison/index.html b/api/macros/json_has_three_way_comparison/index.html index fe04ffdc0..61dba055a 100644 --- a/api/macros/json_has_three_way_comparison/index.html +++ b/api/macros/json_has_three_way_comparison/index.html @@ -3,4 +3,4 @@ #include <nlohmann/json.hpp> ... -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/macros/json_no_io/index.html b/api/macros/json_no_io/index.html index 836d00121..9168289d8 100644 --- a/api/macros/json_no_io/index.html +++ b/api/macros/json_no_io/index.html @@ -4,4 +4,4 @@ #include <nlohmann/json.hpp> ... -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/macros/json_noexception/index.html b/api/macros/json_noexception/index.html index ccaa5ebdf..f160c285e 100644 --- a/api/macros/json_noexception/index.html +++ b/api/macros/json_noexception/index.html @@ -4,4 +4,4 @@ #include <nlohmann/json.hpp> ... -

See also

Version history

Added in version 2.1.0.

\ No newline at end of file +

See also

Version history

Added in version 2.1.0.

\ No newline at end of file diff --git a/api/macros/json_skip_library_version_check/index.html b/api/macros/json_skip_library_version_check/index.html index 742367798..78c89be01 100644 --- a/api/macros/json_skip_library_version_check/index.html +++ b/api/macros/json_skip_library_version_check/index.html @@ -1,4 +1,4 @@ JSON_SKIP_LIBRARY_VERSION_CHECK - JSON for Modern C++
Skip to content

JSON_SKIP_LIBRARY_VERSION_CHECK

#define JSON_SKIP_LIBRARY_VERSION_CHECK
 

When defined, the library will not create a compiler warning when a different version of the library was already included.

Default definition

By default, the macro is not defined.

#undef JSON_SKIP_LIBRARY_VERSION_CHECK
 

Notes

ABI compatibility

Mixing different library versions in the same code can be a problem as the different versions may not be ABI compatible.

Examples

Example

The following warning will be shown in case a different version of the library was already included:

Already included a different version of the library!
-

Version history

Added in version 3.11.0.

\ No newline at end of file +

Version history

Added in version 3.11.0.

\ No newline at end of file diff --git a/api/macros/json_skip_unsupported_compiler_check/index.html b/api/macros/json_skip_unsupported_compiler_check/index.html index 4dd679a61..46d6fe37f 100644 --- a/api/macros/json_skip_unsupported_compiler_check/index.html +++ b/api/macros/json_skip_unsupported_compiler_check/index.html @@ -4,4 +4,4 @@ #include <nlohmann/json.hpp> ... -

Version history

Added in version 3.2.0.

\ No newline at end of file +

Version history

Added in version 3.2.0.

\ No newline at end of file diff --git a/api/macros/json_throw_user/index.html b/api/macros/json_throw_user/index.html index 4de5aabea..dbd41f8e3 100644 --- a/api/macros/json_throw_user/index.html +++ b/api/macros/json_throw_user/index.html @@ -21,4 +21,4 @@ std::abort();} #include <nlohmann/json.hpp> -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/macros/json_use_global_udls/index.html b/api/macros/json_use_global_udls/index.html index cf9f48588..524009c40 100644 --- a/api/macros/json_use_global_udls/index.html +++ b/api/macros/json_use_global_udls/index.html @@ -29,4 +29,4 @@ std::cout << j << std::endl; }

Output:

42
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/macros/json_use_implicit_conversions/index.html b/api/macros/json_use_implicit_conversions/index.html index cf07a90e4..9bbf70c65 100644 --- a/api/macros/json_use_implicit_conversions/index.html +++ b/api/macros/json_use_implicit_conversions/index.html @@ -4,4 +4,4 @@ std::string s = j;

When JSON_USE_IMPLICIT_CONVERSIONS is defined to 0, the code above does no longer compile. Instead, it must be written like this:

json j = "Hello, world!";
 auto s = j.get<std::string>();
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/macros/json_use_legacy_discarded_value_comparison/index.html b/api/macros/json_use_legacy_discarded_value_comparison/index.html index 08eae8356..ad6204948 100644 --- a/api/macros/json_use_legacy_discarded_value_comparison/index.html +++ b/api/macros/json_use_legacy_discarded_value_comparison/index.html @@ -4,4 +4,4 @@ #include <nlohmann/json.hpp> ... -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/macros/nlohmann_define_derived_type/index.html b/api/macros/nlohmann_define_derived_type/index.html index fac79c126..cbdb283d2 100644 --- a/api/macros/nlohmann_define_derived_type/index.html +++ b/api/macros/nlohmann_define_derived_type/index.html @@ -86,4 +86,4 @@ "Ba": 23, "Bb": 42 } -

Notes:

See also

Version history

  1. Added in version 3.12.0.
  2. Added in version 3.12.0.
  3. Added in version 3.12.0.
  4. Added in version 3.12.0.
  5. Added in version 3.12.0.
  6. Added in version 3.12.0.
\ No newline at end of file +

Notes:

See also

Version history

  1. Added in version 3.12.0.
  2. Added in version 3.12.0.
  3. Added in version 3.12.0.
  4. Added in version 3.12.0.
  5. Added in version 3.12.0.
  6. Added in version 3.12.0.
\ No newline at end of file diff --git a/api/macros/nlohmann_define_type_intrusive/index.html b/api/macros/nlohmann_define_type_intrusive/index.html index a3b99e8be..d7f5b64d9 100644 --- a/api/macros/nlohmann_define_type_intrusive/index.html +++ b/api/macros/nlohmann_define_type_intrusive/index.html @@ -291,4 +291,4 @@ json j = p; std::cout << "serialization: " << j << std::endl; } -

See also

Version history

  1. Added in version 3.9.0.
  2. Added in version 3.11.0.
  3. Added in version 3.11.3.
\ No newline at end of file +

See also

Version history

  1. Added in version 3.9.0.
  2. Added in version 3.11.0.
  3. Added in version 3.11.3.
\ No newline at end of file diff --git a/api/macros/nlohmann_define_type_non_intrusive/index.html b/api/macros/nlohmann_define_type_non_intrusive/index.html index 01df3d44a..0bced35d8 100644 --- a/api/macros/nlohmann_define_type_non_intrusive/index.html +++ b/api/macros/nlohmann_define_type_non_intrusive/index.html @@ -259,4 +259,4 @@ json j = p; std::cout << "serialization: " << j << std::endl; } -

See also

Version history

  1. Added in version 3.9.0.
  2. Added in version 3.11.0.
  3. Added in version 3.11.3.
\ No newline at end of file +

See also

Version history

  1. Added in version 3.9.0.
  2. Added in version 3.11.0.
  3. Added in version 3.11.3.
\ No newline at end of file diff --git a/api/macros/nlohmann_json_namespace/index.html b/api/macros/nlohmann_json_namespace/index.html index 5af4eeae6..71dddf5fe 100644 --- a/api/macros/nlohmann_json_namespace/index.html +++ b/api/macros/nlohmann_json_namespace/index.html @@ -14,4 +14,4 @@ std::cout << QUOTE(NLOHMANN_JSON_NAMESPACE) << std::endl; }

Output:

nlohmann::json_abi_v3_12_0
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/macros/nlohmann_json_namespace_begin/index.html b/api/macros/nlohmann_json_namespace_begin/index.html index 6b1170f1c..c0f19ac45 100644 --- a/api/macros/nlohmann_json_namespace_begin/index.html +++ b/api/macros/nlohmann_json_namespace_begin/index.html @@ -40,4 +40,4 @@ std::cout << j << std::endl; }

Output:

[1,null]
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/macros/nlohmann_json_namespace_no_version/index.html b/api/macros/nlohmann_json_namespace_no_version/index.html index df071ca11..73f1749cb 100644 --- a/api/macros/nlohmann_json_namespace_no_version/index.html +++ b/api/macros/nlohmann_json_namespace_no_version/index.html @@ -14,4 +14,4 @@ std::cout << QUOTE(NLOHMANN_JSON_NAMESPACE) << std::endl; }

Output:

nlohmann::json_abi
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/macros/nlohmann_json_serialize_enum/index.html b/api/macros/nlohmann_json_serialize_enum/index.html index a9238dcf7..3bb9c8303 100644 --- a/api/macros/nlohmann_json_serialize_enum/index.html +++ b/api/macros/nlohmann_json_serialize_enum/index.html @@ -101,4 +101,4 @@

Output:

0 -> "red"
 "rot" -> 0
 "red" -> 0
-

See also

Version history

Added in version 3.4.0.

\ No newline at end of file +

See also

Version history

Added in version 3.4.0.

\ No newline at end of file diff --git a/api/macros/nlohmann_json_version_major/index.html b/api/macros/nlohmann_json_version_major/index.html index 80a0a9870..f3c9937e7 100644 --- a/api/macros/nlohmann_json_version_major/index.html +++ b/api/macros/nlohmann_json_version_major/index.html @@ -14,4 +14,4 @@ << NLOHMANN_JSON_VERSION_PATCH << std::endl; }

Output:

JSON for Modern C++ version 3.12.0
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/operator_gtgt/index.html b/api/operator_gtgt/index.html index e80b46c35..c0c1ed49a 100644 --- a/api/operator_gtgt/index.html +++ b/api/operator_gtgt/index.html @@ -38,4 +38,4 @@ "number": 23, "string": "Hello, world!" } -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/operator_literal_json/index.html b/api/operator_literal_json/index.html index cf69f5c23..3ff9461ff 100644 --- a/api/operator_literal_json/index.html +++ b/api/operator_literal_json/index.html @@ -22,4 +22,4 @@ "answer": 42, "hello": "world" } -

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/operator_literal_json_pointer/index.html b/api/operator_literal_json_pointer/index.html index 2b25b37f4..366b01bcd 100644 --- a/api/operator_literal_json_pointer/index.html +++ b/api/operator_literal_json_pointer/index.html @@ -20,4 +20,4 @@ std::cout << std::setw(2) << val << '\n'; }

Output:

"world"
-

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/api/operator_ltlt/index.html b/api/operator_ltlt/index.html index 24fc80385..94da01f69 100644 --- a/api/operator_ltlt/index.html +++ b/api/operator_ltlt/index.html @@ -57,4 +57,4 @@ std::cout << ptr << std::endl; }

Output:

/foo/bar/baz
-

Version history

  1. Added in version 1.0.0. Added support for indentation character and deprecated std::ostream& operator>>(const basic_json& j, std::ostream& o) in version 3.0.0.
  2. Added in version 3.11.0.
\ No newline at end of file +

Version history

  1. Added in version 1.0.0. Added support for indentation character and deprecated std::ostream& operator>>(const basic_json& j, std::ostream& o) in version 3.0.0.
  2. Added in version 3.11.0.
\ No newline at end of file diff --git a/api/ordered_json/index.html b/api/ordered_json/index.html index c649ba7c3..66b9ba7bc 100644 --- a/api/ordered_json/index.html +++ b/api/ordered_json/index.html @@ -18,4 +18,4 @@ "two": 2, "three": 3 } -

See also

Version history

Since version 3.9.0.

\ No newline at end of file +

See also

Version history

Since version 3.9.0.

\ No newline at end of file diff --git a/api/ordered_map/index.html b/api/ordered_map/index.html index 5a8b40785..9b9d7d70e 100644 --- a/api/ordered_map/index.html +++ b/api/ordered_map/index.html @@ -51,4 +51,4 @@ m_std = { one:eins three:drei two:zwei } m_ordered = { two:zwei three:drei one:eins } m_std = { one:eins three:drei two:zwei } -

See also

Version history

\ No newline at end of file +

See also

Version history

\ No newline at end of file diff --git a/community/code_of_conduct/index.html b/community/code_of_conduct/index.html index f54785f70..3da9d9417 100644 --- a/community/code_of_conduct/index.html +++ b/community/code_of_conduct/index.html @@ -1 +1 @@ - Code of Conduct - JSON for Modern C++
Skip to content

Contributor Covenant Code of Conduct

Our Pledge

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

Our Standards

Examples of behavior that contributes to a positive environment for our community include:

  • Demonstrating empathy and kindness toward other people
  • Being respectful of differing opinions, viewpoints, and experiences
  • Giving and gracefully accepting constructive feedback
  • Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
  • Focusing on what is best not just for us as individuals, but for the overall community

Examples of unacceptable behavior include:

  • The use of sexualized language or imagery, and sexual attention or advances of any kind
  • Trolling, insulting or derogatory comments, and personal or political attacks
  • Public or private harassment
  • Publishing others' private information, such as a physical or email address, without their explicit permission
  • Other conduct which could reasonably be considered inappropriate in a professional setting

Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.

Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.

Scope

This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at mail@nlohmann.me. All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the reporter of any incident.

Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:

1. Correction

Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.

Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.

2. Warning

Community Impact: A violation through a single incident or series of actions.

Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.

3. Temporary Ban

Community Impact: A serious violation of community standards, including sustained inappropriate behavior.

Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.

4. Permanent Ban

Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.

Consequence: A permanent ban from any sort of public interaction within the community.

Attribution

This Code of Conduct is adapted from the Contributor Covenant, version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.

Community Impact Guidelines were inspired by Mozilla's code of conduct enforcement ladder.

For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.

\ No newline at end of file + Code of Conduct - JSON for Modern C++
Skip to content

Contributor Covenant Code of Conduct

Our Pledge

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

Our Standards

Examples of behavior that contributes to a positive environment for our community include:

  • Demonstrating empathy and kindness toward other people
  • Being respectful of differing opinions, viewpoints, and experiences
  • Giving and gracefully accepting constructive feedback
  • Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
  • Focusing on what is best not just for us as individuals, but for the overall community

Examples of unacceptable behavior include:

  • The use of sexualized language or imagery, and sexual attention or advances of any kind
  • Trolling, insulting or derogatory comments, and personal or political attacks
  • Public or private harassment
  • Publishing others' private information, such as a physical or email address, without their explicit permission
  • Other conduct which could reasonably be considered inappropriate in a professional setting

Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.

Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.

Scope

This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at mail@nlohmann.me. All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the reporter of any incident.

Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:

1. Correction

Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.

Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.

2. Warning

Community Impact: A violation through a single incident or series of actions.

Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.

3. Temporary Ban

Community Impact: A serious violation of community standards, including sustained inappropriate behavior.

Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.

4. Permanent Ban

Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.

Consequence: A permanent ban from any sort of public interaction within the community.

Attribution

This Code of Conduct is adapted from the Contributor Covenant, version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.

Community Impact Guidelines were inspired by Mozilla's code of conduct enforcement ladder.

For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.

\ No newline at end of file diff --git a/community/contribution_guidelines/index.html b/community/contribution_guidelines/index.html index 1f209bcea..3a2c7b45e 100644 --- a/community/contribution_guidelines/index.html +++ b/community/contribution_guidelines/index.html @@ -5,4 +5,4 @@ $ ctest --test-dir

Add tests

The tests are located in tests/src/unit-*.cpp and contain doctest assertions like CHECK. The tests are structured along the features of the library or the nature of the tests. Usually, it should be clear from the context which existing file needs to be extended, and only very few cases require creating new test files.

When fixing a bug, edit unit-regression2.cpp and add a section referencing the fixed issue.

Exceptions

When you test exceptions, please use CHECK_THROWS_WITH_AS which also takes the what() argument of the thrown exception into account.

Coverage

If test coverage decreases, an automatic warning comment will be posted on the pull request. You can access a code coverage report as an artifact to the “Ubuntu” workflow.

Update the documentation

The main documentation of the library is generated from the files docs/mkdocs/docs. This folder contains dedicated pages for certain features, a list of all exceptions, and extensive API documentation with details on every public API function.

Build the documentation locally using:

make install_venv -C docs/mkdocs
 make serve -C docs/mkdocs
 

The documentation will then be available at http://127.0.0.1:8000/. See the documentation of mkdocs and Material for MkDocs for more information.

Amalgamate the source code

The single-header files single_include/nlohmann/json.hpp and single_include/nlohmann/json_fwd.hpp are generated from the source files in the include/nlohmann directory. Do not edit the files directly; instead, modify the include/nlohmann sources and regenerate the files by executing:

make amalgamate
-

Running make amalgamate will also apply automatic formatting to the source files using Artistic Style. This formatting may modify your source files in-place. Be certain to review and commit any changes to avoid unintended formatting diffs in commits.

Please don't...

Certain contributions are not helpful.

Break the public API

We take pride in the library being used by numerous customers across various industries. They all rely on the guarantees provided by semantic versioning. Please do not change the library such that the public API of the 3.x.y version is broken. This includes:

Although these guidelines may seem restrictive, they are essential for maintaining the library’s utility.

Breaking changes may be introduced when they are guarded with a feature macro such as JSON_USE_IMPLICIT_CONVERSIONS which allows selectively changing the behavior of the library. In next steps, the current behavior can then be deprecated. Using feature macros then allows users to test their code against the library in the next major release.

Break C++11 language conformance

This library is designed to work with C++11 and later. This means that any supported C++11 compiler should compile the library without problems. Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support.

Please do not add features that do not work with the mentioned supported compilers. Please guard features from C++14 and later against the respective JSON_HAS_CPP_14 macros.

Break JSON conformance

Please refrain from proposing changes that would break JSON conformance. If you propose a conformant extension of JSON to be supported by the library, please motivate this extension.

Wanted

The following areas really need contribution and are always welcomed:

We look forward to your contributions and collaboration to enhance the library!

\ No newline at end of file +

Running make amalgamate will also apply automatic formatting to the source files using Artistic Style. This formatting may modify your source files in-place. Be certain to review and commit any changes to avoid unintended formatting diffs in commits.

Please don't...

Certain contributions are not helpful.

Break the public API

We take pride in the library being used by numerous customers across various industries. They all rely on the guarantees provided by semantic versioning. Please do not change the library such that the public API of the 3.x.y version is broken. This includes:

Although these guidelines may seem restrictive, they are essential for maintaining the library’s utility.

Breaking changes may be introduced when they are guarded with a feature macro such as JSON_USE_IMPLICIT_CONVERSIONS which allows selectively changing the behavior of the library. In next steps, the current behavior can then be deprecated. Using feature macros then allows users to test their code against the library in the next major release.

Break C++11 language conformance

This library is designed to work with C++11 and later. This means that any supported C++11 compiler should compile the library without problems. Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support.

Please do not add features that do not work with the mentioned supported compilers. Please guard features from C++14 and later against the respective JSON_HAS_CPP_14 macros.

Break JSON conformance

Please refrain from proposing changes that would break JSON conformance. If you propose a conformant extension of JSON to be supported by the library, please motivate this extension.

Wanted

The following areas really need contribution and are always welcomed:

We look forward to your contributions and collaboration to enhance the library!

\ No newline at end of file diff --git a/community/governance/index.html b/community/governance/index.html index d2913f553..0eb31f5cc 100644 --- a/community/governance/index.html +++ b/community/governance/index.html @@ -1 +1 @@ - Governance - JSON for Modern C++
Skip to content

Governance

The governance model for the JSON for Modern C++ project is a Benevolent Dictator for Life (BDFL) structure. As the sole maintainer, Niels Lohmann is responsible for all key aspects of the project. The project governance may evolve as the project grows, but any changes will be documented here and communicated to contributors.

Overview

This project is led by a benevolent dictator, Niels Lohmann, and managed by the community. That is, the community actively contributes to the day-to-day maintenance of the project, but the general strategic line is drawn by the benevolent dictator. In case of disagreement, they have the last word. It is the benevolent dictator’s job to resolve disputes within the community and to ensure that the project is able to progress in a coordinated way. In turn, it is the community’s job to guide the decisions of the benevolent dictator through active engagement and contribution.

Roles and responsibilities

Benevolent dictator (project lead)

Typically, the benevolent dictator, or project lead, is self-appointed. However, because the community always has the ability to fork, this person is fully answerable to the community. The project lead’s role is a difficult one: they set the strategic objectives of the project and communicate these clearly to the community. They also have to understand the community as a whole and strive to satisfy as many conflicting needs as possible, while ensuring that the project survives in the long term.

In many ways, the role of the benevolent dictator is less about dictatorship and more about diplomacy. The key is to ensure that, as the project expands, the right people are given influence over it and the community rallies behind the vision of the project lead. The lead’s job is then to ensure that the committers (see below) make the right decisions on behalf of the project. Generally speaking, as long as the committers are aligned with the project’s strategy, the project lead will allow them to proceed as they desire.

Committers

Committers are contributors who have made several valuable contributions to the project and are now relied upon to both write code directly to the repository and screen the contributions of others. In many cases they are programmers but it is also possible that they contribute in a different role. Typically, a committer will focus on a specific aspect of the project, and will bring a level of expertise and understanding that earns them the respect of the community and the project lead. The role of committer is not an official one, it is simply a position that influential members of the community will find themselves in as the project lead looks to them for guidance and support.

Committers have no authority over the overall direction of the project. However, they do have the ear of the project lead. It is a committer’s job to ensure that the lead is aware of the community’s needs and collective objectives, and to help develop or elicit appropriate contributions to the project. Often, committers are given informal control over their specific areas of responsibility, and are assigned rights to directly modify certain areas of the source code. That is, although committers do not have explicit decision-making authority, they will often find that their actions are synonymous with the decisions made by the lead.

Contributors

Contributors are community members who either have no desire to become committers, or have not yet been given the opportunity by the benevolent dictator. They make valuable contributions, such as those outlined in the list below, but generally do not have the authority to make direct changes to the project code. Contributors engage with the project through communication tools, such as email lists, and via reports and patches attached to issues in the issue tracker, as detailed in our community tools document.

Anyone can become a contributor. There is no expectation of commitment to the project, no specific skill requirements and no selection process. To become a contributor, a community member simply has to perform one or more actions that are beneficial to the project.

Some contributors will already be engaging with the project as users, but will also find themselves doing one or more of the following:

  • supporting new users (current users often provide the most effective new user support)
  • reporting bugs
  • identifying requirements
  • supplying graphics and web design
  • programming
  • assisting with project infrastructure
  • writing documentation
  • fixing bugs
  • adding features

As contributors gain experience and familiarity with the project, they may find that the project lead starts relying on them more and more. When this begins to happen, they gradually adopt the role of committer, as described above.

Users

Users are community members who have a need for the project. They are the most important members of the community: without them, the project would have no purpose. Anyone can be a user; there are no specific requirements.

Users should be encouraged to participate in the life of the project and the community as much as possible. User contributions enable the project team to ensure that they are satisfying the needs of those users. Common user activities include (but are not limited to):

  • evangelising about the project
  • informing developers of project strengths and weaknesses from a new user’s perspective
  • providing moral support (a ‘thank you’ goes a long way)
  • providing financial support

Users who continue to engage with the project and its community will often find themselves becoming more and more involved. Such users may then go on to become contributors, as described above.

Support

All participants in the community are encouraged to provide support for new users within the project management infrastructure. This support is provided as a way of growing the community. Those seeking support should recognise that all support activity within the project is voluntary and is therefore provided as and when time allows. A user requiring guaranteed response times or results should therefore seek to purchase a support contract from a vendor. (Of course, that vendor should be an active member of the community.) However, for those willing to engage with the project on its own terms, and willing to help support other users, the community support channels are ideal.

Contribution Process

Anyone can contribute to the project, regardless of their skills, as there are many ways to contribute. For instance, a contributor might be active on the project mailing list and issue tracker, or might supply patches. The various ways of contributing are described in more detail in our roles in open source document.

The developer mailing list is the most appropriate place for a contributor to ask for help when making their first contribution.

Decision-Making Process

The benevolent dictatorship model does not need a formal conflict resolution process, since the project lead’s word is final. If the community chooses to question the wisdom of the actions of a committer, the project lead can review their decisions by checking the email archives, and either uphold or reverse them.


\ No newline at end of file + Governance - JSON for Modern C++
Skip to content

Governance

The governance model for the JSON for Modern C++ project is a Benevolent Dictator for Life (BDFL) structure. As the sole maintainer, Niels Lohmann is responsible for all key aspects of the project. The project governance may evolve as the project grows, but any changes will be documented here and communicated to contributors.

Overview

This project is led by a benevolent dictator, Niels Lohmann, and managed by the community. That is, the community actively contributes to the day-to-day maintenance of the project, but the general strategic line is drawn by the benevolent dictator. In case of disagreement, they have the last word. It is the benevolent dictator’s job to resolve disputes within the community and to ensure that the project is able to progress in a coordinated way. In turn, it is the community’s job to guide the decisions of the benevolent dictator through active engagement and contribution.

Roles and responsibilities

Benevolent dictator (project lead)

Typically, the benevolent dictator, or project lead, is self-appointed. However, because the community always has the ability to fork, this person is fully answerable to the community. The project lead’s role is a difficult one: they set the strategic objectives of the project and communicate these clearly to the community. They also have to understand the community as a whole and strive to satisfy as many conflicting needs as possible, while ensuring that the project survives in the long term.

In many ways, the role of the benevolent dictator is less about dictatorship and more about diplomacy. The key is to ensure that, as the project expands, the right people are given influence over it and the community rallies behind the vision of the project lead. The lead’s job is then to ensure that the committers (see below) make the right decisions on behalf of the project. Generally speaking, as long as the committers are aligned with the project’s strategy, the project lead will allow them to proceed as they desire.

Committers

Committers are contributors who have made several valuable contributions to the project and are now relied upon to both write code directly to the repository and screen the contributions of others. In many cases they are programmers but it is also possible that they contribute in a different role. Typically, a committer will focus on a specific aspect of the project, and will bring a level of expertise and understanding that earns them the respect of the community and the project lead. The role of committer is not an official one, it is simply a position that influential members of the community will find themselves in as the project lead looks to them for guidance and support.

Committers have no authority over the overall direction of the project. However, they do have the ear of the project lead. It is a committer’s job to ensure that the lead is aware of the community’s needs and collective objectives, and to help develop or elicit appropriate contributions to the project. Often, committers are given informal control over their specific areas of responsibility, and are assigned rights to directly modify certain areas of the source code. That is, although committers do not have explicit decision-making authority, they will often find that their actions are synonymous with the decisions made by the lead.

Contributors

Contributors are community members who either have no desire to become committers, or have not yet been given the opportunity by the benevolent dictator. They make valuable contributions, such as those outlined in the list below, but generally do not have the authority to make direct changes to the project code. Contributors engage with the project through communication tools, such as email lists, and via reports and patches attached to issues in the issue tracker, as detailed in our community tools document.

Anyone can become a contributor. There is no expectation of commitment to the project, no specific skill requirements and no selection process. To become a contributor, a community member simply has to perform one or more actions that are beneficial to the project.

Some contributors will already be engaging with the project as users, but will also find themselves doing one or more of the following:

  • supporting new users (current users often provide the most effective new user support)
  • reporting bugs
  • identifying requirements
  • supplying graphics and web design
  • programming
  • assisting with project infrastructure
  • writing documentation
  • fixing bugs
  • adding features

As contributors gain experience and familiarity with the project, they may find that the project lead starts relying on them more and more. When this begins to happen, they gradually adopt the role of committer, as described above.

Users

Users are community members who have a need for the project. They are the most important members of the community: without them, the project would have no purpose. Anyone can be a user; there are no specific requirements.

Users should be encouraged to participate in the life of the project and the community as much as possible. User contributions enable the project team to ensure that they are satisfying the needs of those users. Common user activities include (but are not limited to):

  • evangelising about the project
  • informing developers of project strengths and weaknesses from a new user’s perspective
  • providing moral support (a ‘thank you’ goes a long way)
  • providing financial support

Users who continue to engage with the project and its community will often find themselves becoming more and more involved. Such users may then go on to become contributors, as described above.

Support

All participants in the community are encouraged to provide support for new users within the project management infrastructure. This support is provided as a way of growing the community. Those seeking support should recognise that all support activity within the project is voluntary and is therefore provided as and when time allows. A user requiring guaranteed response times or results should therefore seek to purchase a support contract from a vendor. (Of course, that vendor should be an active member of the community.) However, for those willing to engage with the project on its own terms, and willing to help support other users, the community support channels are ideal.

Contribution Process

Anyone can contribute to the project, regardless of their skills, as there are many ways to contribute. For instance, a contributor might be active on the project mailing list and issue tracker, or might supply patches. The various ways of contributing are described in more detail in our roles in open source document.

The developer mailing list is the most appropriate place for a contributor to ask for help when making their first contribution.

Decision-Making Process

The benevolent dictatorship model does not need a formal conflict resolution process, since the project lead’s word is final. If the community chooses to question the wisdom of the actions of a committer, the project lead can review their decisions by checking the email archives, and either uphold or reverse them.


\ No newline at end of file diff --git a/community/index.html b/community/index.html index d0ebe4e0b..46b123725 100644 --- a/community/index.html +++ b/community/index.html @@ -1 +1 @@ - Community - JSON for Modern C++
Skip to content
\ No newline at end of file + Community - JSON for Modern C++
Skip to content
\ No newline at end of file diff --git a/community/quality_assurance/index.html b/community/quality_assurance/index.html index cba26ddb1..4f76db5a6 100644 --- a/community/quality_assurance/index.html +++ b/community/quality_assurance/index.html @@ -548,4 +548,4 @@ # for the linux (LF) line end style --lineend=linux -
  • The code style is checked with cpplint with 61 enabled rules.

  • Simple integration

    Requirement: Single header

    The library can be used by adding a single header to a C++ project.

    Requirement: CMake as primary development tool

    All library functions are exposed and usable by CMake.

    \ No newline at end of file +
  • The code style is checked with cpplint with 61 enabled rules.

  • Simple integration

    Requirement: Single header

    The library can be used by adding a single header to a C++ project.

    Requirement: CMake as primary development tool

    All library functions are exposed and usable by CMake.

    \ No newline at end of file diff --git a/community/security_policy/index.html b/community/security_policy/index.html index 26b35b80e..4665195f6 100644 --- a/community/security_policy/index.html +++ b/community/security_policy/index.html @@ -1 +1 @@ - Security Policy - JSON for Modern C++
    Skip to content

    Security Policy

    Reporting a Vulnerability

    We value the security of our users and appreciate your efforts to responsibly disclose vulnerabilities. If you have identified a security vulnerability in this repository, please use the GitHub Security Advisory "Report a Vulnerability" tab.

    Until it is published, this draft security advisory will only be visible to the maintainers of this project. Other users and teams may be added once the advisory is created.

    We will send a response indicating the next steps in handling your report. After the initial reply to your report, we will keep you informed of the progress towards a fix and full announcement and may ask for additional information or guidance.

    For vulnerabilities in third-party dependencies or modules, please report them directly to the respective maintainers.

    Additional Resources

    We sincerely thank you for contributing to the security and integrity of this project!

    \ No newline at end of file + Security Policy - JSON for Modern C++
    Skip to content

    Security Policy

    Reporting a Vulnerability

    We value the security of our users and appreciate your efforts to responsibly disclose vulnerabilities. If you have identified a security vulnerability in this repository, please use the GitHub Security Advisory "Report a Vulnerability" tab.

    Until it is published, this draft security advisory will only be visible to the maintainers of this project. Other users and teams may be added once the advisory is created.

    We will send a response indicating the next steps in handling your report. After the initial reply to your report, we will keep you informed of the progress towards a fix and full announcement and may ask for additional information or guidance.

    For vulnerabilities in third-party dependencies or modules, please report them directly to the respective maintainers.

    Additional Resources

    We sincerely thank you for contributing to the security and integrity of this project!

    \ No newline at end of file diff --git a/features/arbitrary_types/index.html b/features/arbitrary_types/index.html index 29c53c79a..0b8f42b2a 100644 --- a/features/arbitrary_types/index.html +++ b/features/arbitrary_types/index.html @@ -159,4 +159,4 @@ value = j.template get<T>(); // oops! } }; -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/assertions/index.html b/features/assertions/index.html index 0b948940a..269aca7dd 100644 --- a/features/assertions/index.html +++ b/features/assertions/index.html @@ -43,4 +43,4 @@ } }

    Output:

    [json.exception.parse_error.101] parse error: attempting to parse an empty input; check that your input string or stream contains the expected JSON
    -

    See also

    \ No newline at end of file +

    See also

    \ No newline at end of file diff --git a/features/binary_formats/bjdata/index.html b/features/binary_formats/bjdata/index.html index 62843b2dd..a780b242e 100644 --- a/features/binary_formats/bjdata/index.html +++ b/features/binary_formats/bjdata/index.html @@ -95,4 +95,4 @@ "compact": true, "schema": 0 } -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/binary_formats/bson/index.html b/features/binary_formats/bson/index.html index 554e242ea..5d3593574 100644 --- a/features/binary_formats/bson/index.html +++ b/features/binary_formats/bson/index.html @@ -46,4 +46,4 @@ "compact": true, "schema": 0 } -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/binary_formats/cbor/index.html b/features/binary_formats/cbor/index.html index 1ba8b2bb9..31f83fb1e 100644 --- a/features/binary_formats/cbor/index.html +++ b/features/binary_formats/cbor/index.html @@ -45,4 +45,4 @@ "compact": true, "schema": 0 } -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/binary_formats/index.html b/features/binary_formats/index.html index 02e4a715c..af7c34a99 100644 --- a/features/binary_formats/index.html +++ b/features/binary_formats/index.html @@ -1 +1 @@ - Binary Formats - JSON for Modern C++
    Skip to content

    Binary Formats

    Though JSON is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance, over a network. Hence, the library supports

    to efficiently encode JSON values to byte vectors and to decode such vectors.

    Comparison

    Completeness

    Format Serialization Deserialization
    BJData complete complete
    BSON incomplete: top-level value must be an object incomplete, but all JSON types are supported
    CBOR complete incomplete, but all JSON types are supported
    MessagePack complete complete
    UBJSON complete complete

    Binary values

    Format Binary values Binary subtypes
    BJData not supported not supported
    BSON supported supported
    CBOR supported supported
    MessagePack supported supported
    UBJSON not supported not supported

    See binary values for more information.

    Sizes

    Format canada.json twitter.json citm_catalog.json jeopardy.json
    BJData 53.2 % 91.1 % 78.1 % 96.6 %
    BJData (size) 58.6 % 92.1 % 86.7 % 97.4 %
    BJData (size+tyoe) 58.6 % 92.1 % 86.5 % 97.4 %
    BSON 85.8 % 95.2 % 95.8 % 106.7 %
    CBOR 50.5 % 86.3 % 68.4 % 88.0 %
    MessagePack 50.5 % 86.0 % 68.5 % 87.9 %
    UBJSON 53.2 % 91.3 % 78.2 % 96.6 %
    UBJSON (size) 58.6 % 92.3 % 86.8 % 97.4 %
    UBJSON (size+type) 55.9 % 92.3 % 85.0 % 95.0 %

    Sizes compared to minified JSON value.

    \ No newline at end of file + Binary Formats - JSON for Modern C++
    Skip to content

    Binary Formats

    Though JSON is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance, over a network. Hence, the library supports

    to efficiently encode JSON values to byte vectors and to decode such vectors.

    Comparison

    Completeness

    Format Serialization Deserialization
    BJData complete complete
    BSON incomplete: top-level value must be an object incomplete, but all JSON types are supported
    CBOR complete incomplete, but all JSON types are supported
    MessagePack complete complete
    UBJSON complete complete

    Binary values

    Format Binary values Binary subtypes
    BJData not supported not supported
    BSON supported supported
    CBOR supported supported
    MessagePack supported supported
    UBJSON not supported not supported

    See binary values for more information.

    Sizes

    Format canada.json twitter.json citm_catalog.json jeopardy.json
    BJData 53.2 % 91.1 % 78.1 % 96.6 %
    BJData (size) 58.6 % 92.1 % 86.7 % 97.4 %
    BJData (size+tyoe) 58.6 % 92.1 % 86.5 % 97.4 %
    BSON 85.8 % 95.2 % 95.8 % 106.7 %
    CBOR 50.5 % 86.3 % 68.4 % 88.0 %
    MessagePack 50.5 % 86.0 % 68.5 % 87.9 %
    UBJSON 53.2 % 91.3 % 78.2 % 96.6 %
    UBJSON (size) 58.6 % 92.3 % 86.8 % 97.4 %
    UBJSON (size+type) 55.9 % 92.3 % 85.0 % 95.0 %

    Sizes compared to minified JSON value.

    \ No newline at end of file diff --git a/features/binary_formats/messagepack/index.html b/features/binary_formats/messagepack/index.html index 2bc39f279..2731ec8a7 100644 --- a/features/binary_formats/messagepack/index.html +++ b/features/binary_formats/messagepack/index.html @@ -45,4 +45,4 @@ "compact": true, "schema": 0 } -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/binary_formats/ubjson/index.html b/features/binary_formats/ubjson/index.html index 4abaf0bcd..1ba1de26b 100644 --- a/features/binary_formats/ubjson/index.html +++ b/features/binary_formats/ubjson/index.html @@ -90,4 +90,4 @@ "compact": true, "schema": 0 } -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/binary_values/index.html b/features/binary_values/index.html index be82bacac..68ec9e97f 100644 --- a/features/binary_values/index.html +++ b/features/binary_values/index.html @@ -154,4 +154,4 @@ vector <|-- binary_t

    By default, binary values are stored as

    Note that subtype (42) is not serialized and that UBJSON has no binary type, and deserializing v would yield the following value:

    {
       "binary": [202, 254, 186, 190]
     }
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/comments/index.html b/features/comments/index.html index 953cf7bef..cf80ff7d3 100644 --- a/features/comments/index.html +++ b/features/comments/index.html @@ -45,4 +45,4 @@ "Neptune" ] } -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/element_access/checked_access/index.html b/features/element_access/checked_access/index.html index fa0ff4c56..2c57d9450 100644 --- a/features/element_access/checked_access/index.html +++ b/features/element_access/checked_access/index.html @@ -12,4 +12,4 @@

    When accessing an invalid index (i.e., an index greater than or equal to the array size) or the passed object key is non-existing, an exception is thrown.

    Accessing via invalid index or missing key
    j.at("hobbies").at(3) = "cooking";
     

    This code produces the following exception:

    [json.exception.out_of_range.401] array index 3 is out of range
     

    When you extended diagnostic messages are enabled by defining JSON_DIAGNOSTICS, the exception further gives information where the key or index is missing or out of range.

    [json.exception.out_of_range.401] (/hobbies) array index 3 is out of range
    -

    Notes

    Exceptions

    • at can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a basic_json::type_error is thrown.
    • basic_json::out_of_range exception exceptions are thrown if the provided key is not found in an object or the provided index is invalid.

    Summary

    scenario non-const value const value
    access to existing object key reference to existing value is returned const reference to existing value is returned
    access to valid array index reference to existing value is returned const reference to existing value is returned
    access to non-existing object key basic_json::out_of_range exception is thrown basic_json::out_of_range exception is thrown
    access to invalid array index basic_json::out_of_range exception is thrown basic_json::out_of_range exception is thrown
    \ No newline at end of file +

    Notes

    Exceptions

    • at can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a basic_json::type_error is thrown.
    • basic_json::out_of_range exception exceptions are thrown if the provided key is not found in an object or the provided index is invalid.

    Summary

    scenario non-const value const value
    access to existing object key reference to existing value is returned const reference to existing value is returned
    access to valid array index reference to existing value is returned const reference to existing value is returned
    access to non-existing object key basic_json::out_of_range exception is thrown basic_json::out_of_range exception is thrown
    access to invalid array index basic_json::out_of_range exception is thrown basic_json::out_of_range exception is thrown
    \ No newline at end of file diff --git a/features/element_access/default_value/index.html b/features/element_access/default_value/index.html index 0fa3476cf..b17156a15 100644 --- a/features/element_access/default_value/index.html +++ b/features/element_access/default_value/index.html @@ -20,4 +20,4 @@ default value (int): -1 default value (uint64_t): 18446744073709551615 explicit return value type: 18446744073709551615 -

    See also

    \ No newline at end of file +

    See also

    \ No newline at end of file diff --git a/features/element_access/index.html b/features/element_access/index.html index 0d7449551..b8dbcc50f 100644 --- a/features/element_access/index.html +++ b/features/element_access/index.html @@ -1 +1 @@ - Element Access - JSON for Modern C++
    Skip to content

    Element Access

    There are many ways elements in a JSON value can be accessed:

    • unchecked access via operator[]
    • checked access via at
    • access with default value via value
    • iterators
    • JSON pointers
    \ No newline at end of file + Element Access - JSON for Modern C++
    Skip to content

    Element Access

    There are many ways elements in a JSON value can be accessed:

    • unchecked access via operator[]
    • checked access via at
    • access with default value via value
    • iterators
    • JSON pointers
    \ No newline at end of file diff --git a/features/element_access/unchecked_access/index.html b/features/element_access/unchecked_access/index.html index a1e81325d..ed981a2b8 100644 --- a/features/element_access/unchecked_access/index.html +++ b/features/element_access/unchecked_access/index.html @@ -19,4 +19,4 @@ "age": 42, "hobbies": ["running", "reading", null, "cooking"] } -

    Notes

    Design rationale

    The library behaves differently to std::vector and std::map:

    • std::vector::operator[] never inserts a new element.
    • std::map::operator[] is not available for const values.

    The type json wraps all JSON value types. It would be impossible to remove operator[] for const objects. At the same time, inserting elements for non-const objects is really convenient as it avoids awkward insert calls. To this end, we decided to have an inserting non-const behavior for both arrays and objects.

    Info

    The access is unchecked. In case the passed object key does not exist or the passed array index is invalid, no exception is thrown.

    Danger

    • It is undefined behavior to access a const object with a non-existing key.
    • It is undefined behavior to access a const array with an invalid index.
    • In debug mode, an assertion will fire in both cases. You can disable assertions by defining the preprocessor symbol NDEBUG or redefine the macro JSON_ASSERT(x). See the documentation on runtime assertions for more information.

    Exceptions

    operator[] can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a basic_json::type_error is thrown.

    Summary

    scenario non-const value const value
    access to existing object key reference to existing value is returned const reference to existing value is returned
    access to valid array index reference to existing value is returned const reference to existing value is returned
    access to non-existing object key reference to newly inserted null value is returned undefined behavior; runtime assertion in debug mode
    access to invalid array index reference to newly inserted null value is returned; any index between previous maximal index and passed index are filled with null undefined behavior; runtime assertion in debug mode
    \ No newline at end of file +

    Notes

    Design rationale

    The library behaves differently to std::vector and std::map:

    • std::vector::operator[] never inserts a new element.
    • std::map::operator[] is not available for const values.

    The type json wraps all JSON value types. It would be impossible to remove operator[] for const objects. At the same time, inserting elements for non-const objects is really convenient as it avoids awkward insert calls. To this end, we decided to have an inserting non-const behavior for both arrays and objects.

    Info

    The access is unchecked. In case the passed object key does not exist or the passed array index is invalid, no exception is thrown.

    Danger

    • It is undefined behavior to access a const object with a non-existing key.
    • It is undefined behavior to access a const array with an invalid index.
    • In debug mode, an assertion will fire in both cases. You can disable assertions by defining the preprocessor symbol NDEBUG or redefine the macro JSON_ASSERT(x). See the documentation on runtime assertions for more information.

    Exceptions

    operator[] can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a basic_json::type_error is thrown.

    Summary

    scenario non-const value const value
    access to existing object key reference to existing value is returned const reference to existing value is returned
    access to valid array index reference to existing value is returned const reference to existing value is returned
    access to non-existing object key reference to newly inserted null value is returned undefined behavior; runtime assertion in debug mode
    access to invalid array index reference to newly inserted null value is returned; any index between previous maximal index and passed index are filled with null undefined behavior; runtime assertion in debug mode
    \ No newline at end of file diff --git a/features/enum_conversion/index.html b/features/enum_conversion/index.html index d32f97528..1f9ffaaf5 100644 --- a/features/enum_conversion/index.html +++ b/features/enum_conversion/index.html @@ -24,4 +24,4 @@ // undefined json value to enum (where the first map entry above is the default) json jPi = 3.14; assert(jPi.get<TaskState>() == TS_INVALID ); -

    Notes

    Just as in Arbitrary Type Conversions above,

    Other Important points:

    \ No newline at end of file +

    Notes

    Just as in Arbitrary Type Conversions above,

    Other Important points:

    \ No newline at end of file diff --git a/features/iterators/index.html b/features/iterators/index.html index 2360a210d..53eaa58b0 100644 --- a/features/iterators/index.html +++ b/features/iterators/index.html @@ -53,4 +53,4 @@ std::cout << *it << std::endl; }

    Output:

    "Hello, world"
    -

    Iterator invalidation

    Operations invalidated iterators
    clear all
    \ No newline at end of file +

    Iterator invalidation

    Operations invalidated iterators
    clear all
    \ No newline at end of file diff --git a/features/json_patch/index.html b/features/json_patch/index.html index fb5f29986..842ed4eca 100644 --- a/features/json_patch/index.html +++ b/features/json_patch/index.html @@ -105,4 +105,4 @@ "world" ] } -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/json_pointer/index.html b/features/json_pointer/index.html index 7fcfa1fea..c858af8d9 100644 --- a/features/json_pointer/index.html +++ b/features/json_pointer/index.html @@ -45,4 +45,4 @@ "/nested/three/1": false }

    The reverse function, unflatten recreates the original value.

    auto j_original = j_flat.unflatten();
    -

    See also

    \ No newline at end of file +

    See also

    \ No newline at end of file diff --git a/features/macros/index.html b/features/macros/index.html index 3cc8bef3f..223a13673 100644 --- a/features/macros/index.html +++ b/features/macros/index.html @@ -1 +1 @@ - Supported Macros - JSON for Modern C++
    Skip to content

    Supported Macros

    Some aspects of the library can be configured by defining preprocessor macros before including the json.hpp header. See also the API documentation for macros for examples and more information.

    JSON_ASSERT(x)

    This macro controls which code is executed for runtime assertions of the library.

    See full documentation of JSON_ASSERT(x).

    JSON_CATCH_USER(exception)

    This macro overrides catch calls inside the library.

    See full documentation of JSON_CATCH_USER(exception).

    JSON_DIAGNOSTICS

    This macro enables extended diagnostics for exception messages. Possible values are 1 to enable or 0 to disable (default).

    When enabled, exception messages contain a JSON Pointer to the JSON value that triggered the exception, see Extended diagnostic messages for an example. Note that enabling this macro increases the size of every JSON value by one pointer and adds some runtime overhead.

    The diagnostics messages can also be controlled with the CMake option JSON_Diagnostics (OFF by default) which sets JSON_DIAGNOSTICS accordingly.

    See full documentation of JSON_DIAGNOSTICS.

    JSON_DIAGNOSTIC_POSITIONS

    When enabled, two new member functions start_pos() and end_pos() are added to basic_json values. If the value was created by calling theparse function, then these functions allow querying the byte positions of the value in the input it was parsed from. The byte positions are also used in exceptions to help locate errors.

    The diagnostics positions can also be controlled with the CMake option JSON_Diagnostic_Positions (OFF by default) which sets JSON_DIAGNOSTIC_POSITIONS accordingly.

    See full documentation of JSON_DIAGNOSTIC_POSITIONS

    JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20

    The library targets C++11, but also supports some features introduced in later C++ versions (e.g., std::string_view support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.

    See full documentation of JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, and JSON_HAS_CPP_20.

    JSON_HAS_FILESYSTEM, JSON_HAS_EXPERIMENTAL_FILESYSTEM

    When compiling with C++17, the library provides conversions from and to std::filesystem::path. As compiler support for filesystem is limited, the library tries to detect whether <filesystem>/std::filesystem (JSON_HAS_FILESYSTEM) or <experimental/filesystem>/std::experimental::filesystem (JSON_HAS_EXPERIMENTAL_FILESYSTEM) should be used. To override the built-in check, define JSON_HAS_FILESYSTEM or JSON_HAS_EXPERIMENTAL_FILESYSTEM to 1.

    See full documentation of JSON_HAS_FILESYSTEM and JSON_HAS_EXPERIMENTAL_FILESYSTEM.

    JSON_NOEXCEPTION

    Exceptions can be switched off by defining the symbol JSON_NOEXCEPTION.

    See full documentation of JSON_NOEXCEPTION.

    JSON_DISABLE_ENUM_SERIALIZATION

    When defined, default parse and serialize functions for enums are excluded and have to be provided by the user, for example, using NLOHMANN_JSON_SERIALIZE_ENUM.

    See full documentation of JSON_DISABLE_ENUM_SERIALIZATION.

    JSON_NO_IO

    When defined, headers <cstdio>, <ios>, <iosfwd>, <istream>, and <ostream> are not included and parse functions relying on these headers are excluded. This is relevant for environment where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)).

    See full documentation of JSON_NO_IO.

    JSON_SKIP_LIBRARY_VERSION_CHECK

    When defined, the library will not create a compiler warning when a different version of the library was already included.

    See full documentation of JSON_SKIP_LIBRARY_VERSION_CHECK.

    JSON_SKIP_UNSUPPORTED_COMPILER_CHECK

    When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows using the library with compilers that do not fully support C++11 and may only work if unsupported features are not used.

    See full documentation of JSON_SKIP_UNSUPPORTED_COMPILER_CHECK.

    JSON_THROW_USER(exception)

    This macro overrides throw calls inside the library. The argument is the exception to be thrown.

    See full documentation of JSON_THROW_USER(exception).

    JSON_TRY_USER

    This macro overrides try calls inside the library.

    See full documentation of JSON_TRY_USER.

    JSON_USE_IMPLICIT_CONVERSIONS

    When defined to 0, implicit conversions are switched off. By default, implicit conversions are switched on.

    See full documentation of JSON_USE_IMPLICIT_CONVERSIONS.

    NLOHMANN_DEFINE_TYPE_*(...), NLOHMANN_DEFINE_DERIVED_TYPE_*(...)

    The library defines 12 macros to simplify the serialization/deserialization of types. See the page on arbitrary type conversion for a detailed discussion.

    NLOHMANN_JSON_SERIALIZE_ENUM(type, ...)

    This macro simplifies the serialization/deserialization of enum types. See Specializing enum conversion for more information.

    See full documentation of NLOHMANN_JSON_SERIALIZE_ENUM.

    NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH

    These macros are defined by the library and contain the version numbers according to Semantic Versioning 2.0.0.

    See full documentation of NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, and NLOHMANN_JSON_VERSION_PATCH.

    \ No newline at end of file + Supported Macros - JSON for Modern C++
    Skip to content

    Supported Macros

    Some aspects of the library can be configured by defining preprocessor macros before including the json.hpp header. See also the API documentation for macros for examples and more information.

    JSON_ASSERT(x)

    This macro controls which code is executed for runtime assertions of the library.

    See full documentation of JSON_ASSERT(x).

    JSON_CATCH_USER(exception)

    This macro overrides catch calls inside the library.

    See full documentation of JSON_CATCH_USER(exception).

    JSON_DIAGNOSTICS

    This macro enables extended diagnostics for exception messages. Possible values are 1 to enable or 0 to disable (default).

    When enabled, exception messages contain a JSON Pointer to the JSON value that triggered the exception, see Extended diagnostic messages for an example. Note that enabling this macro increases the size of every JSON value by one pointer and adds some runtime overhead.

    The diagnostics messages can also be controlled with the CMake option JSON_Diagnostics (OFF by default) which sets JSON_DIAGNOSTICS accordingly.

    See full documentation of JSON_DIAGNOSTICS.

    JSON_DIAGNOSTIC_POSITIONS

    When enabled, two new member functions start_pos() and end_pos() are added to basic_json values. If the value was created by calling theparse function, then these functions allow querying the byte positions of the value in the input it was parsed from. The byte positions are also used in exceptions to help locate errors.

    The diagnostics positions can also be controlled with the CMake option JSON_Diagnostic_Positions (OFF by default) which sets JSON_DIAGNOSTIC_POSITIONS accordingly.

    See full documentation of JSON_DIAGNOSTIC_POSITIONS

    JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20

    The library targets C++11, but also supports some features introduced in later C++ versions (e.g., std::string_view support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly.

    See full documentation of JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, and JSON_HAS_CPP_20.

    JSON_HAS_FILESYSTEM, JSON_HAS_EXPERIMENTAL_FILESYSTEM

    When compiling with C++17, the library provides conversions from and to std::filesystem::path. As compiler support for filesystem is limited, the library tries to detect whether <filesystem>/std::filesystem (JSON_HAS_FILESYSTEM) or <experimental/filesystem>/std::experimental::filesystem (JSON_HAS_EXPERIMENTAL_FILESYSTEM) should be used. To override the built-in check, define JSON_HAS_FILESYSTEM or JSON_HAS_EXPERIMENTAL_FILESYSTEM to 1.

    See full documentation of JSON_HAS_FILESYSTEM and JSON_HAS_EXPERIMENTAL_FILESYSTEM.

    JSON_NOEXCEPTION

    Exceptions can be switched off by defining the symbol JSON_NOEXCEPTION.

    See full documentation of JSON_NOEXCEPTION.

    JSON_DISABLE_ENUM_SERIALIZATION

    When defined, default parse and serialize functions for enums are excluded and have to be provided by the user, for example, using NLOHMANN_JSON_SERIALIZE_ENUM.

    See full documentation of JSON_DISABLE_ENUM_SERIALIZATION.

    JSON_NO_IO

    When defined, headers <cstdio>, <ios>, <iosfwd>, <istream>, and <ostream> are not included and parse functions relying on these headers are excluded. This is relevant for environment where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)).

    See full documentation of JSON_NO_IO.

    JSON_SKIP_LIBRARY_VERSION_CHECK

    When defined, the library will not create a compiler warning when a different version of the library was already included.

    See full documentation of JSON_SKIP_LIBRARY_VERSION_CHECK.

    JSON_SKIP_UNSUPPORTED_COMPILER_CHECK

    When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows using the library with compilers that do not fully support C++11 and may only work if unsupported features are not used.

    See full documentation of JSON_SKIP_UNSUPPORTED_COMPILER_CHECK.

    JSON_THROW_USER(exception)

    This macro overrides throw calls inside the library. The argument is the exception to be thrown.

    See full documentation of JSON_THROW_USER(exception).

    JSON_TRY_USER

    This macro overrides try calls inside the library.

    See full documentation of JSON_TRY_USER.

    JSON_USE_IMPLICIT_CONVERSIONS

    When defined to 0, implicit conversions are switched off. By default, implicit conversions are switched on.

    See full documentation of JSON_USE_IMPLICIT_CONVERSIONS.

    NLOHMANN_DEFINE_TYPE_*(...), NLOHMANN_DEFINE_DERIVED_TYPE_*(...)

    The library defines 12 macros to simplify the serialization/deserialization of types. See the page on arbitrary type conversion for a detailed discussion.

    NLOHMANN_JSON_SERIALIZE_ENUM(type, ...)

    This macro simplifies the serialization/deserialization of enum types. See Specializing enum conversion for more information.

    See full documentation of NLOHMANN_JSON_SERIALIZE_ENUM.

    NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH

    These macros are defined by the library and contain the version numbers according to Semantic Versioning 2.0.0.

    See full documentation of NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, and NLOHMANN_JSON_VERSION_PATCH.

    \ No newline at end of file diff --git a/features/merge_patch/index.html b/features/merge_patch/index.html index b6916cbb5..9476b3fdc 100644 --- a/features/merge_patch/index.html +++ b/features/merge_patch/index.html @@ -50,4 +50,4 @@ ], "title": "Hello!" } -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/modules/index.html b/features/modules/index.html index 79476fa22..93da0b84c 100644 --- a/features/modules/index.html +++ b/features/modules/index.html @@ -7,4 +7,4 @@ std::ifstream f("example.json"); json data = json::parse(f); -

    Modules do not export macros

    It should be noted that as modules do not export macros, the nlohmann.json module will not export any macros, but rather only the following symbols:

    \ No newline at end of file +

    Modules do not export macros

    It should be noted that as modules do not export macros, the nlohmann.json module will not export any macros, but rather only the following symbols:

    \ No newline at end of file diff --git a/features/namespace/index.html b/features/namespace/index.html index 9ab3b66e2..6de289245 100644 --- a/features/namespace/index.html +++ b/features/namespace/index.html @@ -9,4 +9,4 @@ app --> json_diag app --> library

    In releases prior to 3.11.0, mixing any version of the JSON library with different JSON_DIAGNOSTICS settings would result in a crashing application. If some_library never passes instances of JSON library types to the application, this scenario became safe in version 3.11.0 and above due to the inline namespace yielding distinct symbol names.

    Limitations

    Neither the compiler nor the linker will issue as much as a warning when translation units – intended to be linked together and that include different versions and/or configurations of the JSON library – exchange and use library types.

    There is an exception when forward declarations are used (i.e., when including json_fwd.hpp) in which case the linker may complain about undefined references.

    Disabling the version component

    Different versions are not necessarily ABI-incompatible, but the project does not actively track changes in the ABI and recommends that all parts of a codebase exchanging library types be built with the same version. Users can, at their own risk, disable the version component of the linline namespace, allowing different versions – but not configurations – to be used in cases where the linker would otherwise output undefined reference errors.

    To do so, define NLOHMANN_JSON_NAMESPACE_NO_VERSION to 1.

    This applies to version 3.11.2 and above only; versions 3.11.0 and 3.11.1 can apply the technique described in the next section to emulate the effect of the NLOHMANN_JSON_NAMESPACE_NO_VERSION macro.

    Use at your own risk

    Disabling the namespace version component and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!

    Disabling the inline namespace completely

    When interoperability with code using a pre-3.11.0 version of the library is required, users can, at their own risk restore the old namespace layout by redefining NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END as follows:

    #define NLOHMANN_JSON_NAMESPACE_BEGIN  namespace nlohmann {
     #define NLOHMANN_JSON_NAMESPACE_END    }
    -

    Use at your own risk

    Overriding the namespace and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!

    Version history

    \ No newline at end of file +

    Use at your own risk

    Overriding the namespace and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned!

    Version history

    \ No newline at end of file diff --git a/features/object_order/index.html b/features/object_order/index.html index 701dba86d..99ab1da0b 100644 --- a/features/object_order/index.html +++ b/features/object_order/index.html @@ -57,4 +57,4 @@ "three": 3 "two": 2, } -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/parsing/index.html b/features/parsing/index.html index a4cd8c29c..410f80a5e 100644 --- a/features/parsing/index.html +++ b/features/parsing/index.html @@ -1 +1 @@ - Parsing - JSON for Modern C++
    Skip to content
    \ No newline at end of file + Parsing - JSON for Modern C++
    Skip to content
    \ No newline at end of file diff --git a/features/parsing/json_lines/index.html b/features/parsing/json_lines/index.html index 625b0a36f..db73ba0df 100644 --- a/features/parsing/json_lines/index.html +++ b/features/parsing/json_lines/index.html @@ -33,4 +33,4 @@ { std::cout << j << std::endl; } -

    with a JSON Lines input does not work, because the parser will try to parse one value after the last one.

    \ No newline at end of file +

    with a JSON Lines input does not work, because the parser will try to parse one value after the last one.

    \ No newline at end of file diff --git a/features/parsing/parse_exceptions/index.html b/features/parsing/parse_exceptions/index.html index 389469cc7..26decce1f 100644 --- a/features/parsing/parse_exceptions/index.html +++ b/features/parsing/parse_exceptions/index.html @@ -63,4 +63,4 @@ last read: "3,]" parsing unsuccessful! parsed value: [1,2,3] -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/parsing/parser_callbacks/index.html b/features/parsing/parser_callbacks/index.html index 2d0410c76..49caea431 100644 --- a/features/parsing/parser_callbacks/index.html +++ b/features/parsing/parser_callbacks/index.html @@ -90,4 +90,4 @@ "Width": 800 } } -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/parsing/sax_interface/index.html b/features/parsing/sax_interface/index.html index e7545807f..6635f7156 100644 --- a/features/parsing/sax_interface/index.html +++ b/features/parsing/sax_interface/index.html @@ -49,4 +49,4 @@ class sax_t ["json::sax_t"] { // called when a parse error occurs; byte position, the last token, and an exception is passed bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex); -

    The return value of each function determines whether parsing should proceed.

    To implement your own SAX handler, proceed as follows:

    1. Implement the SAX interface in a class. You can use class nlohmann::json_sax<json> as base class, but you can also use any class where the functions described above are implemented and public.
    2. Create an object of your SAX interface class, e.g. my_sax.
    3. Call bool json::sax_parse(input, &my_sax); where the first parameter can be any input like a string or an input stream and the second parameter is a pointer to your SAX interface.

    Note the sax_parse function only returns a bool indicating the result of the last executed SAX event. It does not return json value - it is up to you to decide what to do with the SAX events. Furthermore, no exceptions are thrown in case of a parse error - it is up to you what to do with the exception object passed to your parse_error implementation. Internally, the SAX interface is used for the DOM parser (class json_sax_dom_parser) as well as the acceptor (json_sax_acceptor), see file json_sax.hpp.

    See also

    \ No newline at end of file +

    The return value of each function determines whether parsing should proceed.

    To implement your own SAX handler, proceed as follows:

    1. Implement the SAX interface in a class. You can use class nlohmann::json_sax<json> as base class, but you can also use any class where the functions described above are implemented and public.
    2. Create an object of your SAX interface class, e.g. my_sax.
    3. Call bool json::sax_parse(input, &my_sax); where the first parameter can be any input like a string or an input stream and the second parameter is a pointer to your SAX interface.

    Note the sax_parse function only returns a bool indicating the result of the last executed SAX event. It does not return json value - it is up to you to decide what to do with the SAX events. Furthermore, no exceptions are thrown in case of a parse error - it is up to you what to do with the exception object passed to your parse_error implementation. Internally, the SAX interface is used for the DOM parser (class json_sax_dom_parser) as well as the acceptor (json_sax_acceptor), see file json_sax.hpp.

    See also

    \ No newline at end of file diff --git a/features/trailing_commas/index.html b/features/trailing_commas/index.html index 56a35c30a..1a0f2f423 100644 --- a/features/trailing_commas/index.html +++ b/features/trailing_commas/index.html @@ -58,4 +58,4 @@ "Neptune" ] } -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/features/types/index.html b/features/types/index.html index 89969ef48..bda4640a8 100644 --- a/features/types/index.html +++ b/features/types/index.html @@ -77,4 +77,4 @@ basic_json .. value_t

    Template arguments< basic_json, // value_type std::allocator<basic_json> // allocator_type > -

    Limits

    RFC 8259 specifies:

    An implementation may set limits on the maximum depth of nesting.

    In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON array.

    Storage

    Arrays are stored as pointers in a basic_json type. That is, for any access to array values, a pointer of type array_t* must be dereferenced.

    Strings

    RFC 8259 describes JSON strings as follows:

    A string is a sequence of zero or more Unicode characters.

    Unicode values are split by the JSON class into byte-sized characters during deserialization.

    Default type

    With the default values for StringType (std::string), the default value for string_t is std::string.

    Encoding

    Strings are stored in UTF-8 encoding. Therefore, functions like std::string::size() or std::string::length() return the number of bytes in the string rather than the number of characters or glyphs.

    String comparison

    RFC 8259 states:

    Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that "a\\b" and "a\u005Cb" are not equal.

    This implementation is interoperable as it does compare strings code unit by code unit.

    Storage

    String values are stored as pointers in a basic_json type. That is, for any access to string values, a pointer of type string_t* must be dereferenced.

    Booleans

    RFC 8259 implicitly describes a boolean as a type which differentiates the two literals true and false.

    Default type

    With the default values for BooleanType (bool), the default value for boolean_t is bool.

    Storage

    Boolean values are stored directly inside a basic_json type.

    Numbers

    See the number handling article for a detailed discussion on how numbers are handled by this library.

    RFC 8259 describes numbers as follows:

    The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

    This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t, and number_float_t are used.

    Default types

    With the default values for NumberIntegerType (std::int64_t), the default value for number_integer_t is std::int64_t. With the default values for NumberUnsignedType (std::uint64_t), the default value for number_unsigned_t is std::uint64_t. With the default values for NumberFloatType (double), the default value for number_float_t is double.

    Default behavior

    Limits

    RFC 8259 specifies:

    An implementation may set limits on the range and precision of numbers.

    When the default type is used, the maximal integer number that can be stored is 9223372036854775807 (INT64_MAX) and the minimal integer number that can be stored is -9223372036854775808 (INT64_MIN). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as number_unsigned_t or number_float_t.

    When the default type is used, the maximal unsigned integer number that can be stored is 18446744073709551615 (UINT64_MAX) and the minimal integer number that can be stored is 0. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as number_integer_t or number_float_t.

    RFC 8259 further states:

    Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.

    As this range is a subrange of the exactly supported range [INT64_MIN, INT64_MAX], this class's integer type is interoperable.

    RFC 8259 states:

    This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.

    This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than -1.79769313486232e+308 and values greater than 1.79769313486232e+308 will be stored as NaN internally and be serialized to null.

    Storage

    Integer number values, unsigned integer number values, and floating-point number values are stored directly inside a basic_json type.

    \ No newline at end of file +

    Limits

    RFC 8259 specifies:

    An implementation may set limits on the maximum depth of nesting.

    In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON array.

    Storage

    Arrays are stored as pointers in a basic_json type. That is, for any access to array values, a pointer of type array_t* must be dereferenced.

    Strings

    RFC 8259 describes JSON strings as follows:

    A string is a sequence of zero or more Unicode characters.

    Unicode values are split by the JSON class into byte-sized characters during deserialization.

    Default type

    With the default values for StringType (std::string), the default value for string_t is std::string.

    Encoding

    Strings are stored in UTF-8 encoding. Therefore, functions like std::string::size() or std::string::length() return the number of bytes in the string rather than the number of characters or glyphs.

    String comparison

    RFC 8259 states:

    Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that "a\\b" and "a\u005Cb" are not equal.

    This implementation is interoperable as it does compare strings code unit by code unit.

    Storage

    String values are stored as pointers in a basic_json type. That is, for any access to string values, a pointer of type string_t* must be dereferenced.

    Booleans

    RFC 8259 implicitly describes a boolean as a type which differentiates the two literals true and false.

    Default type

    With the default values for BooleanType (bool), the default value for boolean_t is bool.

    Storage

    Boolean values are stored directly inside a basic_json type.

    Numbers

    See the number handling article for a detailed discussion on how numbers are handled by this library.

    RFC 8259 describes numbers as follows:

    The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

    This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer, or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t, and number_float_t are used.

    Default types

    With the default values for NumberIntegerType (std::int64_t), the default value for number_integer_t is std::int64_t. With the default values for NumberUnsignedType (std::uint64_t), the default value for number_unsigned_t is std::uint64_t. With the default values for NumberFloatType (double), the default value for number_float_t is double.

    Default behavior

    Limits

    RFC 8259 specifies:

    An implementation may set limits on the range and precision of numbers.

    When the default type is used, the maximal integer number that can be stored is 9223372036854775807 (INT64_MAX) and the minimal integer number that can be stored is -9223372036854775808 (INT64_MIN). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as number_unsigned_t or number_float_t.

    When the default type is used, the maximal unsigned integer number that can be stored is 18446744073709551615 (UINT64_MAX) and the minimal integer number that can be stored is 0. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will automatically be stored as number_integer_t or number_float_t.

    RFC 8259 further states:

    Note that when such software is used, numbers that are integers and are in the range [-2^{53}+1, 2^{53}-1] are interoperable in the sense that implementations will agree exactly on their numeric values.

    As this range is a subrange of the exactly supported range [INT64_MIN, INT64_MAX], this class's integer type is interoperable.

    RFC 8259 states:

    This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.

    This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than -1.79769313486232e+308 and values greater than 1.79769313486232e+308 will be stored as NaN internally and be serialized to null.

    Storage

    Integer number values, unsigned integer number values, and floating-point number values are stored directly inside a basic_json type.

    \ No newline at end of file diff --git a/features/types/number_handling/index.html b/features/types/number_handling/index.html index 22b2f0d65..8955ce836 100644 --- a/features/types/number_handling/index.html +++ b/features/types/number_handling/index.html @@ -54,4 +54,4 @@ val=nan }

    Note this approach also has the advantage that it can react on non-numerical JSON value types such as strings.

    (Example taken from #777.)

    Determine number types

    As the example in Number conversion shows, there are different functions to determine the type of the stored number:

    function unsigned integer signed integer floating-point string
    is_number() true true true false
    is_number_integer() true true false false
    is_number_unsigned() true false false false
    is_number_float() false false true false
    type_name() "number" "number" "number" "string"
    type() number_unsigned number_integer number_float string

    Template number types

    The number types can be changed with template parameters.

    position number type default type possible values
    5 signed integers std::int64_t std::int32_t, std::int16_t, etc.
    6 unsigned integers std::uint64_t std::uint32_t, std::uint16_t, etc.
    7 floating-point double float, long double

    Constraints on number types

    • The type for signed integers must be convertible from long long. The type for floating-point numbers is used in case of overflow.
    • The type for unsigned integers must be convertible from unsigned long long. The type for floating-point numbers is used in case of overflow.
    • The types for signed and unsigned integers must be distinct, see #2573.
    • Only double, float, and long double are supported for floating-point numbers.

    Example

    A basic_json type that uses long double as floating-point type.

    using json_ld = nlohmann::basic_json<std::map, std::vector, std::string, bool,
                                          std::int64_t, std::uint64_t, long double>;
    -

    Note values should then be parsed with json_ld::parse rather than json::parse as the latter would parse floating-point values to double before then converting them to long double.

    \ No newline at end of file +

    Note values should then be parsed with json_ld::parse rather than json::parse as the latter would parse floating-point values to double before then converting them to long double.

    \ No newline at end of file diff --git a/home/architecture/index.html b/home/architecture/index.html index e7ea225ee..d8fc2f917 100644 --- a/home/architecture/index.html +++ b/home/architecture/index.html @@ -52,4 +52,4 @@ template<class T> void from_json(const basic_json& j, T& t); -

    Additional features

    Details namespace

    \ No newline at end of file +

    Additional features

    Details namespace

    \ No newline at end of file diff --git a/home/customers/index.html b/home/customers/index.html index e54d34e49..dc7fe331a 100644 --- a/home/customers/index.html +++ b/home/customers/index.html @@ -1 +1 @@ - Customers - JSON for Modern C++
    Skip to content

    Customers

    The library is used in multiple projects, applications, operating systems, etc. The list below is not exhaustive, but the result of an internet search. If you know further customers of the library, please let me know.

    Space Exploration

    • Peregrine Lunar Lander Flight 01 - The library was used for payload management in the Peregrine Moon Lander, developed by Astrobotic Technology and launched as part of NASA's Commercial Lunar Payload Services (CLPS) program. After six days in orbit, the spacecraft was intentionally redirected into Earth's atmosphere, where it burned up over the Pacific Ocean on January 18, 2024.

    Automotive

    Gaming and Entertainment

    • Assassin's Creed: Mirage, a stealth-action game set in the Middle East, focusing on the journey of a young assassin with classic parkour and stealth mechanics
    • Chasm: The Rift, a first-person shooter blending horror and adventure, where players navigate dark realms and battle monsters
    • College Football 25, a college football simulation game featuring gameplay that mimics real-life college teams and competitions
    • Concepts, a digital sketching app designed for creative professionals, offering flexible drawing tools for illustration, design, and brainstorming
    • Depthkit, a tool for creating and capturing volumetric video, enabling immersive 3D experiences and interactive content
    • IMG.LY, a platform offering creative tools and SDKs for integrating advanced image and video editing in applications
    • LOOT, a tool for optimizing the load order of game plugins, commonly used in The Elder Scrolls and Fallout series
    • Madden NFL 25, a sports simulation game capturing the excitement of American football with realistic gameplay and team management features
    • Marne, an unofficial private server platform for hosting custom Battlefield 1 game experiences
    • Minecraft, a popular sandbox video game
    • NHL 22, a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience
    • Pixelpart, a 2D animation and video compositing software that allows users to create animated graphics and visual effects with a focus on simplicity and ease of use
    • Razer Cortex, a gaming performance optimizer and system booster designed to enhance the gaming experience
    • Red Dead Redemption II, an open-world action-adventure game following an outlaw's story in the late 1800s, emphasizing deep storytelling and immersive gameplay
    • Snapchat, a multimedia messaging and augmented reality app for communication and entertainment
    • Tactics Ogre: Reborn, a tactical role-playing game featuring strategic battles and deep storytelling elements
    • Throne and Liberty, an MMORPG that offers an expansive fantasy world with dynamic gameplay and immersive storytelling
    • Unity Vivox, a communication service that enables voice and text chat functionality in multiplayer games developed with Unity
    • Zool: Redimensioned, a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments
    • immersivetech, a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications

    Consumer Electronics

    • Audinate, a provider of networked audio solutions specializing in Dante technology, which facilitates high-quality digital audio transport over IP networks
    • Canon CanoScan LIDE, a series of flatbed scanners offering high-resolution image scanning for home and office use
    • Canon PIXMA Printers, a line of all-in-one inkjet printers known for high-quality printing and wireless connectivity
    • Cisco Webex Desk Camera, a video camera designed for professional-quality video conferencing and remote collaboration
    • Philips Hue Personal Wireless Lighting, a smart lighting system for customizable and wireless home illumination
    • Ray-Ban Meta Smart glasses, a pair of smart glasses designed for capturing photos and videos with integrated connectivity and social features
    • Razer Synapse, a unified configuration software enabling hardware customization for Razer devices
    • Siemens SINEMA Remote Connect, a remote connectivity solution for monitoring and managing industrial networks and devices securely
    • Sony PlayStation 4, a gaming console developed by Sony that offers a wide range of games and multimedia entertainment features
    • Sony Virtual Webcam Driver for Remote Camera, a software driver that enables the use of Sony cameras as virtual webcams for video conferencing and streaming

    Operating Systems

    • Apple iOS and macOS, a family of operating systems developed by Apple, including iOS for mobile devices and macOS for desktop computers
    • Google Fuchsia, an open-source operating system developed by Google, designed to be secure, updatable, and adaptable across various devices
    • SerenityOS, an open-source operating system that aims to provide a simple and beautiful user experience with a focus on simplicity and elegance
    • Yocto, a Linux-based build system for creating custom operating systems and software distributions, tailored for embedded devices and IoT applications

    Development Tools and IDEs

    • Accentize SpectralBalance, an adaptive speech analysis tool designed to enhance audio quality by optimizing frequency balance in recordings
    • Arm Compiler for Linux, a software development toolchain for compiling and optimizing applications on Arm-based Linux systems
    • BBEdit, a professional text and code editor for macOS
    • CoderPad, a collaborative coding platform that enables real-time code interviews and assessments for developers; the library is included in every CoderPad instance and can be accessed with a simple #include "json.hpp"
    • Compiler Explorer, a web-based tool that allows users to write, compile, and visualize the assembly output of code in various programming languages; the library is readily available and accessible with the directive #include <nlohmann/json.hpp>.
    • GitHub CodeQL, a code analysis tool used for identifying security vulnerabilities and bugs in software through semantic queries
    • Hex-Rays, a reverse engineering toolset for analyzing and decompiling binaries, primarily used for security research and vulnerability analysis
    • ImHex, a hex editor designed for reverse engineering, providing advanced features for data analysis and manipulation
    • Intel GPA Framework, a suite of cross-platform tools for capturing, analyzing, and optimizing graphics applications across different APIs
    • Intopix, a provider of advanced image processing and compression solutions used in software development and AV workflows
    • MKVToolNix, a set of tools for creating, editing, and inspecting MKV (Matroska) multimedia container files
    • Meta Yoga, a layout engine that facilitates flexible and efficient user interface design across multiple platforms
    • NVIDIA Nsight Compute, a performance analysis tool for CUDA applications that provides detailed insights into GPU performance metrics
    • Notepad++, a free source code editor that supports various programming languages
    • OpenRGB, an open source RGB lighting control that doesn't depend on manufacturer software
    • OpenTelemetry C++, a library for collecting and exporting observability data in C++, enabling developers to implement distributed tracing and metrics in their application
    • Qt Creator, an IDE for developing applications using the Qt application framework
    • Scanbot SDK, a software development kit (SDK) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications

    Machine Learning and AI

    • Apple Core ML Tools, a set of tools for converting and configuring machine learning models for deployment in Apple's Core ML framework
    • Avular Mobile Robotics, a platform for developing and deploying mobile robotics solutions
    • Google gemma.cpp, a lightweight C++ inference engine designed for running AI models from the Gemma family
    • llama.cpp, a C++ library designed for efficient inference of large language models (LLMs), enabling streamlined integration into applications
    • MLX, an array framework for machine learning on Apple Silicon
    • Mozilla llamafile, a tool designed for distributing and executing large language models (LLMs) efficiently using a single file format
    • NVIDIA ACE, a suite of real-time AI solutions designed for the development of interactive avatars and digital human applications, enabling scalable and sophisticated user interactions
    • Peer, a platform offering personalized AI assistants for interactive learning and creative collaboration
    • stable-diffusion.cpp, a C++ implementation of the Stable Diffusion image generation model
    • TanvasTouch, a software development kit (SDK) that enables developers to create tactile experiences on touchscreens, allowing users to feel textures and physical sensations in a digital environment
    • TensorFlow, a machine learning framework that facilitates the development and training of models, supporting data serialization and efficient data exchange between components

    Scientific Research and Analysis

    • BLACK, a bounded linear temporal logic (LTL) satisfiability checker
    • CERN Atlas Athena, a software framework used in the ATLAS experiment at the Large Hadron Collider (LHC) for performance monitoring
    • ICU, the International Components for Unicode, a mature library for software globalization and multilingual support
    • KAMERA, a platform for synchronized data collection and real-time deep learning to map marine species like polar bears and seals, aiding Arctic ecosystem research
    • KiCad, a free and open-source software suite for electronic design automation
    • Maple, a symbolic and numeric computing environment for advanced mathematical modeling and analysis
    • MeVisLab, a software framework for medical image processing and visualization.
    • OpenPMD API, a versatile programming interface for accessing and managing scientific data, designed to facilitate the efficient storage, retrieval, and sharing of simulation data across various applications and platforms
    • ParaView, an open-source tool for large-scale data visualization and analysis across various scientific domains
    • QGIS, a free and open-source geographic information system (GIS) application that allows users to create, edit, visualize, and analyze geospatial data across a variety of formats
    • VTK, a software library for 3D computer graphics, image processing, and visualization
    • VolView, a lightweight application for interactive visualization and analysis of 3D medical imaging data.

    Business and Productivity Software

    • ArcGIS PRO, a desktop geographic information system (GIS) application developed by Esri for mapping and spatial analysis
    • Autodesk Desktop, a software platform developed by Autodesk for creating and managing desktop applications and services
    • Check Point, a cybersecurity company specializing in threat prevention and network security solutions, offering a range of products designed to protect enterprises from cyber threats and ensure data integrity
    • Microsoft Office for Mac, a suite of productivity applications developed by Microsoft for macOS, including tools for word processing, spreadsheets, and presentations
    • Microsoft Teams, a team collaboration application offering workspace chat and video conferencing, file storage, and integration of proprietary and third-party applications and services
    • Nexthink Infinity, a digital employee experience management platform for monitoring and improving IT performance
    • Sophos Connect Client, a secure VPN client from Sophos that allows remote users to connect to their corporate network, ensuring secure access to resources and data
    • Stonebranch, a cloud-based cybersecurity solution that integrates backup, disaster recovery, and cybersecurity features to protect data and ensure business continuity for organizations
    • Tablecruncher, a data analysis tool that allows users to import, analyze, and visualize spreadsheet data, offering interactive features for better insights and decision-making
    • magicplan, a mobile application for creating floor plans and interior designs using augmented reality

    Databases and Big Data

    • ADIOS2, a data management framework designed for high-performance input and output operations
    • Cribl Stream, a real-time data processing platform that enables organizations to collect, route, and transform observability data, enhancing visibility and insights into their systems
    • DB Browser for SQLite, a visual open-source tool for creating, designing, and editing SQLite database files
    • MySQL Connector/C++, a C++ library for connecting and interacting with MySQL databases
    • MySQL NDB Cluster, a distributed database system that provides high availability and scalability for MySQL databases
    • MySQL Shell, an advanced client and code editor for interacting with MySQL servers, supporting SQL, Python, and JavaScript
    • PrestoDB, a distributed SQL query engine designed for large-scale data analytics, originally developed by Facebook
    • ROOT Data Analysis Framework, an open-source data analysis framework widely used in high-energy physics and other fields for data processing and visualization
    • WiredTiger, a high-performance storage engine for databases, offering support for compression, concurrency, and checkpointing

    Simulation and Modeling

    • Arcturus HoloSuite, a software toolset for capturing, editing, and streaming volumetric video, featuring advanced compression technologies for high-quality 3D content creation
    • azul, a fast and efficient 3D city model viewer designed for visualizing urban environments and spatial data
    • Blender, a free and open-source 3D creation suite for modeling, animation, rendering, and more
    • cpplot, a library for creating interactive graphs and charts in C++, which can be viewed in web browsers
    • Foundry Nuke, a powerful node-based digital compositing and visual effects application used in film and television post-production
    • GAMS, a high-performance mathematical modeling system for optimization and decision support
    • Kitware SMTK, a software toolkit for managing simulation models and workflows in scientific and engineering applications
    • M-Star, a computational fluid dynamics software for simulating and analyzing fluid flow
    • MapleSim CAD Toolbox, a software extension for MapleSim that integrates CAD models, allowing users to import, manipulate, and analyze 3D CAD data within the MapleSim environment for enhanced modeling and simulation
    • NVIDIA Omniverse, a platform for 3D content creation and collaboration that enables real-time simulations and interactive experiences across various industries
    • Pixar Renderman, a photorealistic 3D rendering software developed by Pixar, widely used in the film industry for creating high-quality visual effects and animations
    • ROS - Robot Operating System, a set of software libraries and tools that assist in developing robot applications
    • UBS, a multinational financial services and banking company

    Enterprise and Cloud Applications

    • Acronis Cyber Protect Cloud, an all-in-one data protection solution that combines backup, disaster recovery, and cybersecurity to safeguard business data from threats like ransomware
    • Baereos, a backup solution that provides data protection and recovery options for various environments, including physical and virtual systems
    • Bitdefender Home Scanner, a tool from Bitdefender that scans devices for malware and security threats, providing a safeguard against potential online dangers
    • Citrix Provisioning, a solution that streamlines the delivery of virtual desktops and applications by allowing administrators to manage and provision resources efficiently across multiple environments
    • Citrix Virtual Apps and Desktops, a solution from Citrix that delivers virtual apps and desktops
    • Cyberarc, a security solution that specializes in privileged access management, enabling organizations to control and monitor access to critical systems and data, thereby enhancing overall cybersecurity posture
    • Egnyte Desktop, a secure cloud storage solution designed for businesses, enabling file sharing, collaboration, and data management across teams while ensuring compliance and data protection
    • Elster, a digital platform developed by German tax authorities for secure and efficient electronic tax filing and management using secunet protect4use
    • Ethereum Solidity, a high-level, object-oriented programming language designed for implementing smart contracts on the Ethereum platform
    • Inciga, a monitoring tool for IT infrastructure, designed to provide insights into system performance and availability through customizable dashboards and alerts
    • Intel Accelerator Management Daemon for VMware ESXi, a management tool designed for monitoring and controlling Intel hardware accelerators within VMware ESXi environments, optimizing performance and resource allocation
    • Juniper Identity Management Service
    • Microsoft Azure IoT SDK, a collection of tools and libraries to help developers connect, build, and deploy Internet of Things (IoT) solutions on the Azure cloud platform
    • Microsoft WinGet, a command-line utility included in the Windows Package Manager
    • plexusAV, a high-performance AV-over-IP transceiver device capable of video encoding and decoding using the IPMX standard
    • Pointr, a platform for indoor positioning and navigation solutions, offering tools and SDKs for developers to create location-based applications
    • secunet protect4use, a secure, passwordless multifactor authentication solution that transforms smartphones into digital keyrings, ensuring high security for online services and digital identities
    • Sencore MRD 7000, a professional multi-channel receiver and decoder supporting UHD and HD stream decoding
    \ No newline at end of file + Customers - JSON for Modern C++
    Skip to content

    Customers

    The library is used in multiple projects, applications, operating systems, etc. The list below is not exhaustive, but the result of an internet search. If you know further customers of the library, please let me know.

    Space Exploration

    • Peregrine Lunar Lander Flight 01 - The library was used for payload management in the Peregrine Moon Lander, developed by Astrobotic Technology and launched as part of NASA's Commercial Lunar Payload Services (CLPS) program. After six days in orbit, the spacecraft was intentionally redirected into Earth's atmosphere, where it burned up over the Pacific Ocean on January 18, 2024.

    Automotive

    Gaming and Entertainment

    • Assassin's Creed: Mirage, a stealth-action game set in the Middle East, focusing on the journey of a young assassin with classic parkour and stealth mechanics
    • Chasm: The Rift, a first-person shooter blending horror and adventure, where players navigate dark realms and battle monsters
    • College Football 25, a college football simulation game featuring gameplay that mimics real-life college teams and competitions
    • Concepts, a digital sketching app designed for creative professionals, offering flexible drawing tools for illustration, design, and brainstorming
    • Depthkit, a tool for creating and capturing volumetric video, enabling immersive 3D experiences and interactive content
    • IMG.LY, a platform offering creative tools and SDKs for integrating advanced image and video editing in applications
    • LOOT, a tool for optimizing the load order of game plugins, commonly used in The Elder Scrolls and Fallout series
    • Madden NFL 25, a sports simulation game capturing the excitement of American football with realistic gameplay and team management features
    • Marne, an unofficial private server platform for hosting custom Battlefield 1 game experiences
    • Minecraft, a popular sandbox video game
    • NHL 22, a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience
    • Pixelpart, a 2D animation and video compositing software that allows users to create animated graphics and visual effects with a focus on simplicity and ease of use
    • Razer Cortex, a gaming performance optimizer and system booster designed to enhance the gaming experience
    • Red Dead Redemption II, an open-world action-adventure game following an outlaw's story in the late 1800s, emphasizing deep storytelling and immersive gameplay
    • Snapchat, a multimedia messaging and augmented reality app for communication and entertainment
    • Tactics Ogre: Reborn, a tactical role-playing game featuring strategic battles and deep storytelling elements
    • Throne and Liberty, an MMORPG that offers an expansive fantasy world with dynamic gameplay and immersive storytelling
    • Unity Vivox, a communication service that enables voice and text chat functionality in multiplayer games developed with Unity
    • Zool: Redimensioned, a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments
    • immersivetech, a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications

    Consumer Electronics

    • Audinate, a provider of networked audio solutions specializing in Dante technology, which facilitates high-quality digital audio transport over IP networks
    • Canon CanoScan LIDE, a series of flatbed scanners offering high-resolution image scanning for home and office use
    • Canon PIXMA Printers, a line of all-in-one inkjet printers known for high-quality printing and wireless connectivity
    • Cisco Webex Desk Camera, a video camera designed for professional-quality video conferencing and remote collaboration
    • Philips Hue Personal Wireless Lighting, a smart lighting system for customizable and wireless home illumination
    • Ray-Ban Meta Smart glasses, a pair of smart glasses designed for capturing photos and videos with integrated connectivity and social features
    • Razer Synapse, a unified configuration software enabling hardware customization for Razer devices
    • Siemens SINEMA Remote Connect, a remote connectivity solution for monitoring and managing industrial networks and devices securely
    • Sony PlayStation 4, a gaming console developed by Sony that offers a wide range of games and multimedia entertainment features
    • Sony Virtual Webcam Driver for Remote Camera, a software driver that enables the use of Sony cameras as virtual webcams for video conferencing and streaming

    Operating Systems

    • Apple iOS and macOS, a family of operating systems developed by Apple, including iOS for mobile devices and macOS for desktop computers
    • Google Fuchsia, an open-source operating system developed by Google, designed to be secure, updatable, and adaptable across various devices
    • SerenityOS, an open-source operating system that aims to provide a simple and beautiful user experience with a focus on simplicity and elegance
    • Yocto, a Linux-based build system for creating custom operating systems and software distributions, tailored for embedded devices and IoT applications

    Development Tools and IDEs

    • Accentize SpectralBalance, an adaptive speech analysis tool designed to enhance audio quality by optimizing frequency balance in recordings
    • Arm Compiler for Linux, a software development toolchain for compiling and optimizing applications on Arm-based Linux systems
    • BBEdit, a professional text and code editor for macOS
    • CoderPad, a collaborative coding platform that enables real-time code interviews and assessments for developers; the library is included in every CoderPad instance and can be accessed with a simple #include "json.hpp"
    • Compiler Explorer, a web-based tool that allows users to write, compile, and visualize the assembly output of code in various programming languages; the library is readily available and accessible with the directive #include <nlohmann/json.hpp>.
    • GitHub CodeQL, a code analysis tool used for identifying security vulnerabilities and bugs in software through semantic queries
    • Hex-Rays, a reverse engineering toolset for analyzing and decompiling binaries, primarily used for security research and vulnerability analysis
    • ImHex, a hex editor designed for reverse engineering, providing advanced features for data analysis and manipulation
    • Intel GPA Framework, a suite of cross-platform tools for capturing, analyzing, and optimizing graphics applications across different APIs
    • Intopix, a provider of advanced image processing and compression solutions used in software development and AV workflows
    • MKVToolNix, a set of tools for creating, editing, and inspecting MKV (Matroska) multimedia container files
    • Meta Yoga, a layout engine that facilitates flexible and efficient user interface design across multiple platforms
    • NVIDIA Nsight Compute, a performance analysis tool for CUDA applications that provides detailed insights into GPU performance metrics
    • Notepad++, a free source code editor that supports various programming languages
    • OpenRGB, an open source RGB lighting control that doesn't depend on manufacturer software
    • OpenTelemetry C++, a library for collecting and exporting observability data in C++, enabling developers to implement distributed tracing and metrics in their application
    • Qt Creator, an IDE for developing applications using the Qt application framework
    • Scanbot SDK, a software development kit (SDK) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications

    Machine Learning and AI

    • Apple Core ML Tools, a set of tools for converting and configuring machine learning models for deployment in Apple's Core ML framework
    • Avular Mobile Robotics, a platform for developing and deploying mobile robotics solutions
    • Google gemma.cpp, a lightweight C++ inference engine designed for running AI models from the Gemma family
    • llama.cpp, a C++ library designed for efficient inference of large language models (LLMs), enabling streamlined integration into applications
    • MLX, an array framework for machine learning on Apple Silicon
    • Mozilla llamafile, a tool designed for distributing and executing large language models (LLMs) efficiently using a single file format
    • NVIDIA ACE, a suite of real-time AI solutions designed for the development of interactive avatars and digital human applications, enabling scalable and sophisticated user interactions
    • Peer, a platform offering personalized AI assistants for interactive learning and creative collaboration
    • stable-diffusion.cpp, a C++ implementation of the Stable Diffusion image generation model
    • TanvasTouch, a software development kit (SDK) that enables developers to create tactile experiences on touchscreens, allowing users to feel textures and physical sensations in a digital environment
    • TensorFlow, a machine learning framework that facilitates the development and training of models, supporting data serialization and efficient data exchange between components

    Scientific Research and Analysis

    • BLACK, a bounded linear temporal logic (LTL) satisfiability checker
    • CERN Atlas Athena, a software framework used in the ATLAS experiment at the Large Hadron Collider (LHC) for performance monitoring
    • ICU, the International Components for Unicode, a mature library for software globalization and multilingual support
    • KAMERA, a platform for synchronized data collection and real-time deep learning to map marine species like polar bears and seals, aiding Arctic ecosystem research
    • KiCad, a free and open-source software suite for electronic design automation
    • Maple, a symbolic and numeric computing environment for advanced mathematical modeling and analysis
    • MeVisLab, a software framework for medical image processing and visualization.
    • OpenPMD API, a versatile programming interface for accessing and managing scientific data, designed to facilitate the efficient storage, retrieval, and sharing of simulation data across various applications and platforms
    • ParaView, an open-source tool for large-scale data visualization and analysis across various scientific domains
    • QGIS, a free and open-source geographic information system (GIS) application that allows users to create, edit, visualize, and analyze geospatial data across a variety of formats
    • VTK, a software library for 3D computer graphics, image processing, and visualization
    • VolView, a lightweight application for interactive visualization and analysis of 3D medical imaging data.

    Business and Productivity Software

    • ArcGIS PRO, a desktop geographic information system (GIS) application developed by Esri for mapping and spatial analysis
    • Autodesk Desktop, a software platform developed by Autodesk for creating and managing desktop applications and services
    • Check Point, a cybersecurity company specializing in threat prevention and network security solutions, offering a range of products designed to protect enterprises from cyber threats and ensure data integrity
    • Microsoft Office for Mac, a suite of productivity applications developed by Microsoft for macOS, including tools for word processing, spreadsheets, and presentations
    • Microsoft Teams, a team collaboration application offering workspace chat and video conferencing, file storage, and integration of proprietary and third-party applications and services
    • Nexthink Infinity, a digital employee experience management platform for monitoring and improving IT performance
    • Sophos Connect Client, a secure VPN client from Sophos that allows remote users to connect to their corporate network, ensuring secure access to resources and data
    • Stonebranch, a cloud-based cybersecurity solution that integrates backup, disaster recovery, and cybersecurity features to protect data and ensure business continuity for organizations
    • Tablecruncher, a data analysis tool that allows users to import, analyze, and visualize spreadsheet data, offering interactive features for better insights and decision-making
    • magicplan, a mobile application for creating floor plans and interior designs using augmented reality

    Databases and Big Data

    • ADIOS2, a data management framework designed for high-performance input and output operations
    • Cribl Stream, a real-time data processing platform that enables organizations to collect, route, and transform observability data, enhancing visibility and insights into their systems
    • DB Browser for SQLite, a visual open-source tool for creating, designing, and editing SQLite database files
    • MySQL Connector/C++, a C++ library for connecting and interacting with MySQL databases
    • MySQL NDB Cluster, a distributed database system that provides high availability and scalability for MySQL databases
    • MySQL Shell, an advanced client and code editor for interacting with MySQL servers, supporting SQL, Python, and JavaScript
    • PrestoDB, a distributed SQL query engine designed for large-scale data analytics, originally developed by Facebook
    • ROOT Data Analysis Framework, an open-source data analysis framework widely used in high-energy physics and other fields for data processing and visualization
    • WiredTiger, a high-performance storage engine for databases, offering support for compression, concurrency, and checkpointing

    Simulation and Modeling

    • Arcturus HoloSuite, a software toolset for capturing, editing, and streaming volumetric video, featuring advanced compression technologies for high-quality 3D content creation
    • azul, a fast and efficient 3D city model viewer designed for visualizing urban environments and spatial data
    • Blender, a free and open-source 3D creation suite for modeling, animation, rendering, and more
    • cpplot, a library for creating interactive graphs and charts in C++, which can be viewed in web browsers
    • Foundry Nuke, a powerful node-based digital compositing and visual effects application used in film and television post-production
    • GAMS, a high-performance mathematical modeling system for optimization and decision support
    • Kitware SMTK, a software toolkit for managing simulation models and workflows in scientific and engineering applications
    • M-Star, a computational fluid dynamics software for simulating and analyzing fluid flow
    • MapleSim CAD Toolbox, a software extension for MapleSim that integrates CAD models, allowing users to import, manipulate, and analyze 3D CAD data within the MapleSim environment for enhanced modeling and simulation
    • NVIDIA Omniverse, a platform for 3D content creation and collaboration that enables real-time simulations and interactive experiences across various industries
    • Pixar Renderman, a photorealistic 3D rendering software developed by Pixar, widely used in the film industry for creating high-quality visual effects and animations
    • ROS - Robot Operating System, a set of software libraries and tools that assist in developing robot applications
    • UBS, a multinational financial services and banking company

    Enterprise and Cloud Applications

    • Acronis Cyber Protect Cloud, an all-in-one data protection solution that combines backup, disaster recovery, and cybersecurity to safeguard business data from threats like ransomware
    • Baereos, a backup solution that provides data protection and recovery options for various environments, including physical and virtual systems
    • Bitdefender Home Scanner, a tool from Bitdefender that scans devices for malware and security threats, providing a safeguard against potential online dangers
    • Citrix Provisioning, a solution that streamlines the delivery of virtual desktops and applications by allowing administrators to manage and provision resources efficiently across multiple environments
    • Citrix Virtual Apps and Desktops, a solution from Citrix that delivers virtual apps and desktops
    • Cyberarc, a security solution that specializes in privileged access management, enabling organizations to control and monitor access to critical systems and data, thereby enhancing overall cybersecurity posture
    • Egnyte Desktop, a secure cloud storage solution designed for businesses, enabling file sharing, collaboration, and data management across teams while ensuring compliance and data protection
    • Elster, a digital platform developed by German tax authorities for secure and efficient electronic tax filing and management using secunet protect4use
    • Ethereum Solidity, a high-level, object-oriented programming language designed for implementing smart contracts on the Ethereum platform
    • Inciga, a monitoring tool for IT infrastructure, designed to provide insights into system performance and availability through customizable dashboards and alerts
    • Intel Accelerator Management Daemon for VMware ESXi, a management tool designed for monitoring and controlling Intel hardware accelerators within VMware ESXi environments, optimizing performance and resource allocation
    • Juniper Identity Management Service
    • Microsoft Azure IoT SDK, a collection of tools and libraries to help developers connect, build, and deploy Internet of Things (IoT) solutions on the Azure cloud platform
    • Microsoft WinGet, a command-line utility included in the Windows Package Manager
    • plexusAV, a high-performance AV-over-IP transceiver device capable of video encoding and decoding using the IPMX standard
    • Pointr, a platform for indoor positioning and navigation solutions, offering tools and SDKs for developers to create location-based applications
    • secunet protect4use, a secure, passwordless multifactor authentication solution that transforms smartphones into digital keyrings, ensuring high security for online services and digital identities
    • Sencore MRD 7000, a professional multi-channel receiver and decoder supporting UHD and HD stream decoding
    \ No newline at end of file diff --git a/home/design_goals/index.html b/home/design_goals/index.html index 8ba715fab..db0df3792 100644 --- a/home/design_goals/index.html +++ b/home/design_goals/index.html @@ -1 +1 @@ - Design goals - JSON for Modern C++
    Skip to content

    Design goals

    There are myriads of JSON libraries out there, and each may even have its reason to exist. Our class had these design goals:

    • Intuitive syntax. In languages such as Python, JSON feels like a first-class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code.

    • Trivial integration. Our whole code consists of a single header file json.hpp. That's it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings.

    • Serious testing. Our class is heavily unit-tested and covers 100% of the code, including all exceptional behavior. Furthermore, we checked with Valgrind and the Clang Sanitizers that there are no memory leaks. Google OSS-Fuzz additionally runs fuzz tests against all parsers 24/7, effectively executing billions of tests so far. To maintain high quality, the project is following the Core Infrastructure Initiative (CII) best practices.

    Other aspects were not so important to us:

    • Memory efficiency. Each JSON object has an overhead of one pointer (the maximal size of a union) and one enumeration element (1 byte). The default generalization uses the following C++ data types: std::string for strings, int64_t, uint64_t or double for numbers, std::map for objects, std::vector for arrays, and bool for Booleans. However, you can template the generalized class basic_json to your needs.

    • Speed. There are certainly faster JSON libraries out there. However, if your goal is to speed up your development by adding JSON support with a single header, then this library is the way to go. If you know how to use a std::vector or std::map, you are already set.

    See the contribution guidelines for more information.

    \ No newline at end of file + Design goals - JSON for Modern C++
    Skip to content

    Design goals

    There are myriads of JSON libraries out there, and each may even have its reason to exist. Our class had these design goals:

    • Intuitive syntax. In languages such as Python, JSON feels like a first-class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code.

    • Trivial integration. Our whole code consists of a single header file json.hpp. That's it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings.

    • Serious testing. Our class is heavily unit-tested and covers 100% of the code, including all exceptional behavior. Furthermore, we checked with Valgrind and the Clang Sanitizers that there are no memory leaks. Google OSS-Fuzz additionally runs fuzz tests against all parsers 24/7, effectively executing billions of tests so far. To maintain high quality, the project is following the Core Infrastructure Initiative (CII) best practices.

    Other aspects were not so important to us:

    • Memory efficiency. Each JSON object has an overhead of one pointer (the maximal size of a union) and one enumeration element (1 byte). The default generalization uses the following C++ data types: std::string for strings, int64_t, uint64_t or double for numbers, std::map for objects, std::vector for arrays, and bool for Booleans. However, you can template the generalized class basic_json to your needs.

    • Speed. There are certainly faster JSON libraries out there. However, if your goal is to speed up your development by adding JSON support with a single header, then this library is the way to go. If you know how to use a std::vector or std::map, you are already set.

    See the contribution guidelines for more information.

    \ No newline at end of file diff --git a/home/exceptions/index.html b/home/exceptions/index.html index 34e54ccb6..9941c59de 100644 --- a/home/exceptions/index.html +++ b/home/exceptions/index.html @@ -281,4 +281,4 @@ exception id: 401 exception id: 501

    json.exception.other_error.501

    A JSON Patch operation 'test' failed. The unsuccessful operation is also printed.

    Example message

    Executing {"op":"test", "path":"/baz", "value":"bar"} on {"baz": "qux"}:

    [json.exception.other_error.501] unsuccessful: {"op":"test","path":"/baz","value":"bar"}
     

    json.exception.other_error.502

    This exception is thrown when a null pointer is passed as SAX event listener to the sax_parse function.

    Example message

    [json.exception.other_error.502] SAX handler must not be null
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/home/faq/index.html b/home/faq/index.html index 9c1f25288..b6ca514dd 100644 --- a/home/faq/index.html +++ b/home/faq/index.html @@ -26,4 +26,4 @@

    Exceptions

    Parsing without exceptions

    Question

    Is it possible to indicate a parse error without throwing an exception?

    Yes, see Parsing and exceptions.

    Key name in exceptions

    Question

    Can I get the key of the object item that caused an exception?

    Yes, you can. Please define the symbol JSON_DIAGNOSTICS to get extended diagnostics messages.

    Serialization issues

    Number precision

    Question

    The library uses std::numeric_limits<number_float_t>::digits10 (15 for IEEE doubles) digits for serialization. This value is sufficient to guarantee roundtripping. If one uses more than this number of digits of precision, then string -> value -> string is not guaranteed to round-trip.

    cppreference.com

    The value of std::numeric_limits<T>::digits10 is the number of base-10 digits that can be represented by the type T without change, that is, any number with this many significant decimal digits can be converted to a value of type T and back to decimal form, without change due to rounding or overflow.

    Tip

    The website https://float.exposed gives a good insight into the internal storage of floating-point numbers.

    See this section on the library's number handling for more information.

    Compilation issues

    Android SDK

    Question

    Why does the code not compile with Android SDK?

    Android defaults to using very old compilers and C++ libraries. To fix this, add the following to your Application.mk. This will switch to the LLVM C++ library, the Clang compiler, and enable C++11 and other features disabled by default.

    APP_STL := c++_shared
     NDK_TOOLCHAIN_VERSION := clang3.6
     APP_CPPFLAGS += -frtti -fexceptions
    -

    The code compiles successfully with Android NDK, Revision 9 - 11 (and possibly later) and CrystaX's Android NDK version 10.

    Missing STL function

    Questions

    This is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment. For MinGW, please refer to this site and this discussion for information on how to fix this bug. For Android NDK using APP_STL := gnustl_static, please refer to this discussion.

    \ No newline at end of file +

    The code compiles successfully with Android NDK, Revision 9 - 11 (and possibly later) and CrystaX's Android NDK version 10.

    Missing STL function

    Questions

    This is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment. For MinGW, please refer to this site and this discussion for information on how to fix this bug. For Android NDK using APP_STL := gnustl_static, please refer to this discussion.

    \ No newline at end of file diff --git a/home/license/index.html b/home/license/index.html index 89c4abc1e..87a8b0fca 100644 --- a/home/license/index.html +++ b/home/license/index.html @@ -1 +1 @@ - License - JSON for Modern C++
    Skip to content

    License

    The class is licensed under the MIT License:

    Copyright © 2013-2025 Niels Lohmann

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


    The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed under the MIT License (see above). Copyright © 2008-2009 Björn Hoehrmann bjoern@hoehrmann.de

    The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the MIT License (see above). Copyright © 2009 Florian Loitsch

    The class contains a copy of Hedley from Evan Nemerson which is licensed as CC0-1.0.

    \ No newline at end of file + License - JSON for Modern C++
    Skip to content

    License

    The class is licensed under the MIT License:

    Copyright © 2013-2025 Niels Lohmann

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


    The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed under the MIT License (see above). Copyright © 2008-2009 Björn Hoehrmann bjoern@hoehrmann.de

    The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the MIT License (see above). Copyright © 2009 Florian Loitsch

    The class contains a copy of Hedley from Evan Nemerson which is licensed as CC0-1.0.

    \ No newline at end of file diff --git a/home/releases/index.html b/home/releases/index.html index c3550b5a9..20da44b76 100644 --- a/home/releases/index.html +++ b/home/releases/index.html @@ -7,4 +7,4 @@ j << ss;

    or

    json j;
     ss >> j;
    -

    v2.1.1

    Files

    Release date: 2017-02-25 SHA-256: faa2321beb1aa7416d035e7417fcfa59692ac3d8c202728f9bcc302e2d558f57

    Summary

    This release fixes a locale-related bug in the parser. To do so, the whole number handling (lexer, parser, and also the serialization) have been overworked. Furthermore, a lot of small changes added up that were added to this release. All changes are backward-compatible.

    Changes

    v2.1.0

    Files

    Summary

    This release introduces a means to convert from/to user-defined types. The release is backwards compatible.

    conversion

    Changes

    v2.0.10

    Files

    Summary

    This release fixes several security-relevant bugs in the MessagePack and CBOR parsers. The fixes are backwards compatible.

    Changes

    v2.0.9

    Files

    Summary

    This release implements with CBOR and MessagePack two binary serialization/deserialization formats. It further contains some small fixes and improvements. The fixes are backwards compatible.

    cbor

    Changes

    v2.0.8

    Files

    Summary

    This release combines a lot of small fixes and improvements. The fixes are backwards compatible.

    Changes

    v2.0.7

    Files

    Summary

    This release fixes a few bugs in the JSON parser found in the Parsing JSON is a Minefield 💣 article. The fixes are backwards compatible.

    Changes

    v2.0.6

    Files

    Summary

    This release fixes the semantics of operator[] for JSON Pointers (see below). This fix is backwards compatible.

    Changes

    v2.0.5

    Files

    Summary

    This release fixes a regression bug in the stream parser (function parse() and the <</>> operators). This fix is backwards compatible.

    Changes

    v2.0.4

    Files

    Summary

    This release fixes a bug in the stream parser (function parse() and the <</>> operators). This fix is backwards compatible.

    Changes

    v2.0.3

    Files

    Summary

    This release combines a lot of small fixes and improvements. The release is backwards compatible.

    Changes

    v2.0.2

    Files

    Summary

    This release combines a lot of small fixes and improvements. The release is backwards compatible.

    Changes

    v2.0.1

    Files

    Summary

    This release fixes a performance regression in the JSON serialization (function dump()). This fix is backwards compatible.

    Changes

    v2.0.0

    Files

    Summary

    This release adds several features such as JSON Pointers, JSON Patch, or support for 64 bit unsigned integers. Furthermore, several (subtle) bugs have been fixed.

    As noexcept and constexpr specifier have been added to several functions, the public API has effectively been changed in a (potential) non-backwards compatible manner. As we adhere to Semantic Versioning, this calls for a new major version, so say hello to 2️⃣.0️⃣.0️⃣.

    Changes

    Notes

    v1.1.0

    Files

    Summary

    This release fixes several small bugs and adds functionality in a backwards-compatible manner. Compared to the last version (1.0.0), the following changes have been made:

    Changes

    Notes

    There are still known open issues (#178, #187) which will be fixed in version 2.0.0. However, these fixes will require a small API change and will not be entirely backwards-compatible.

    v1.0.0

    Files

    Summary

    This is the first official release. Compared to the prerelease version 1.0.0-rc1, only a few minor improvements have been made:

    Changes

    \ No newline at end of file +

    v2.1.1

    Files

    Release date: 2017-02-25 SHA-256: faa2321beb1aa7416d035e7417fcfa59692ac3d8c202728f9bcc302e2d558f57

    Summary

    This release fixes a locale-related bug in the parser. To do so, the whole number handling (lexer, parser, and also the serialization) have been overworked. Furthermore, a lot of small changes added up that were added to this release. All changes are backward-compatible.

    Changes

    v2.1.0

    Files

    Summary

    This release introduces a means to convert from/to user-defined types. The release is backwards compatible.

    conversion

    Changes

    v2.0.10

    Files

    Summary

    This release fixes several security-relevant bugs in the MessagePack and CBOR parsers. The fixes are backwards compatible.

    Changes

    v2.0.9

    Files

    Summary

    This release implements with CBOR and MessagePack two binary serialization/deserialization formats. It further contains some small fixes and improvements. The fixes are backwards compatible.

    cbor

    Changes

    v2.0.8

    Files

    Summary

    This release combines a lot of small fixes and improvements. The fixes are backwards compatible.

    Changes

    v2.0.7

    Files

    Summary

    This release fixes a few bugs in the JSON parser found in the Parsing JSON is a Minefield 💣 article. The fixes are backwards compatible.

    Changes

    v2.0.6

    Files

    Summary

    This release fixes the semantics of operator[] for JSON Pointers (see below). This fix is backwards compatible.

    Changes

    v2.0.5

    Files

    Summary

    This release fixes a regression bug in the stream parser (function parse() and the <</>> operators). This fix is backwards compatible.

    Changes

    v2.0.4

    Files

    Summary

    This release fixes a bug in the stream parser (function parse() and the <</>> operators). This fix is backwards compatible.

    Changes

    v2.0.3

    Files

    Summary

    This release combines a lot of small fixes and improvements. The release is backwards compatible.

    Changes

    v2.0.2

    Files

    Summary

    This release combines a lot of small fixes and improvements. The release is backwards compatible.

    Changes

    v2.0.1

    Files

    Summary

    This release fixes a performance regression in the JSON serialization (function dump()). This fix is backwards compatible.

    Changes

    v2.0.0

    Files

    Summary

    This release adds several features such as JSON Pointers, JSON Patch, or support for 64 bit unsigned integers. Furthermore, several (subtle) bugs have been fixed.

    As noexcept and constexpr specifier have been added to several functions, the public API has effectively been changed in a (potential) non-backwards compatible manner. As we adhere to Semantic Versioning, this calls for a new major version, so say hello to 2️⃣.0️⃣.0️⃣.

    Changes

    Notes

    v1.1.0

    Files

    Summary

    This release fixes several small bugs and adds functionality in a backwards-compatible manner. Compared to the last version (1.0.0), the following changes have been made:

    Changes

    Notes

    There are still known open issues (#178, #187) which will be fixed in version 2.0.0. However, these fixes will require a small API change and will not be entirely backwards-compatible.

    v1.0.0

    Files

    Summary

    This is the first official release. Compared to the prerelease version 1.0.0-rc1, only a few minor improvements have been made:

    Changes

    \ No newline at end of file diff --git a/home/sponsors/index.html b/home/sponsors/index.html index 2dcd399c1..27446356b 100644 --- a/home/sponsors/index.html +++ b/home/sponsors/index.html @@ -1 +1 @@ - Sponsors - JSON for Modern C++
    Skip to content
    \ No newline at end of file + Sponsors - JSON for Modern C++
    Skip to content
    \ No newline at end of file diff --git a/index.html b/index.html index 2a2a05713..1b8d86cbd 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ - JSON for Modern C++ - JSON for Modern C++
    Skip to content

    JSON for Modern C++

    \ No newline at end of file + JSON for Modern C++ - JSON for Modern C++
    Skip to content

    JSON for Modern C++

    \ No newline at end of file diff --git a/integration/cmake/index.html b/integration/cmake/index.html index 707c80e5d..a23513cbd 100644 --- a/integration/cmake/index.html +++ b/integration/cmake/index.html @@ -46,4 +46,4 @@ GIT_REPOSITORY https://github.com/nlohmann/json GIT_TAG v3.12.0 ) -

    However, the repository https://github.com/nlohmann/json download size is quite large.

    CMake Options

    JSON_BuildTests

    Build the unit tests when BUILD_TESTING is enabled. This option is ON by default if the library's CMake project is the top project. That is, when integrating the library as described above, the test suite is not built unless explicitly switched on with this option.

    JSON_CI

    Enable CI build targets. The exact targets are used during the several CI steps and are subject to change without notice. This option is OFF by default.

    JSON_Diagnostics

    Enable extended diagnostic messages by defining macro JSON_DIAGNOSTICS. This option is OFF by default.

    JSON_Diagnostic_Positions

    Enable position diagnostics by defining macro JSON_DIAGNOSTIC_POSITIONS. This option is OFF by default.

    JSON_DisableEnumSerialization

    Disable default enum serialization by defining the macro JSON_DISABLE_ENUM_SERIALIZATION. This option is OFF by default.

    JSON_FastTests

    Skip expensive/slow test suites. This option is OFF by default. Depends on JSON_BuildTests.

    JSON_GlobalUDLs

    Place user-defined string literals in the global namespace by defining the macro JSON_USE_GLOBAL_UDLS. This option is OFF by default.

    JSON_ImplicitConversions

    Enable implicit conversions by defining macro JSON_USE_IMPLICIT_CONVERSIONS. This option is ON by default.

    JSON_Install

    Install CMake targets during install step. This option is ON by default if the library's CMake project is the top project.

    JSON_LegacyDiscardedValueComparison

    Enable the (incorrect) legacy comparison behavior of discarded JSON values by defining macro JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON. This option is OFF by default.

    JSON_MultipleHeaders

    Use the non-amalgamated version of the library. This option is OFF by default.

    JSON_SystemInclude

    Treat the library headers like system headers (i.e., adding SYSTEM to the target_include_directories call) to check for this library by tools like Clang-Tidy. This option is OFF by default.

    JSON_Valgrind

    Execute the test suite with Valgrind. This option is OFF by default. Depends on JSON_BuildTests.

    \ No newline at end of file +

    However, the repository https://github.com/nlohmann/json download size is quite large.

    CMake Options

    JSON_BuildTests

    Build the unit tests when BUILD_TESTING is enabled. This option is ON by default if the library's CMake project is the top project. That is, when integrating the library as described above, the test suite is not built unless explicitly switched on with this option.

    JSON_CI

    Enable CI build targets. The exact targets are used during the several CI steps and are subject to change without notice. This option is OFF by default.

    JSON_Diagnostics

    Enable extended diagnostic messages by defining macro JSON_DIAGNOSTICS. This option is OFF by default.

    JSON_Diagnostic_Positions

    Enable position diagnostics by defining macro JSON_DIAGNOSTIC_POSITIONS. This option is OFF by default.

    JSON_DisableEnumSerialization

    Disable default enum serialization by defining the macro JSON_DISABLE_ENUM_SERIALIZATION. This option is OFF by default.

    JSON_FastTests

    Skip expensive/slow test suites. This option is OFF by default. Depends on JSON_BuildTests.

    JSON_GlobalUDLs

    Place user-defined string literals in the global namespace by defining the macro JSON_USE_GLOBAL_UDLS. This option is OFF by default.

    JSON_ImplicitConversions

    Enable implicit conversions by defining macro JSON_USE_IMPLICIT_CONVERSIONS. This option is ON by default.

    JSON_Install

    Install CMake targets during install step. This option is ON by default if the library's CMake project is the top project.

    JSON_LegacyDiscardedValueComparison

    Enable the (incorrect) legacy comparison behavior of discarded JSON values by defining macro JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON. This option is OFF by default.

    JSON_MultipleHeaders

    Use the non-amalgamated version of the library. This option is OFF by default.

    JSON_SystemInclude

    Treat the library headers like system headers (i.e., adding SYSTEM to the target_include_directories call) to check for this library by tools like Clang-Tidy. This option is OFF by default.

    JSON_Valgrind

    Execute the test suite with Valgrind. This option is OFF by default. Depends on JSON_BuildTests.

    \ No newline at end of file diff --git a/integration/index.html b/integration/index.html index 8ab36136b..cee9f3604 100644 --- a/integration/index.html +++ b/integration/index.html @@ -2,4 +2,4 @@ // for convenience 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).

    You can further use file single_include/nlohmann/json_fwd.hpp for forward declarations.

    \ No newline at end of file +

    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).

    You can further use file single_include/nlohmann/json_fwd.hpp for forward declarations.

    \ No newline at end of file diff --git a/integration/migration_guide/index.html b/integration/migration_guide/index.html index 0d4ecf7ed..57d9ee081 100644 --- a/integration/migration_guide/index.html +++ b/integration/migration_guide/index.html @@ -54,4 +54,4 @@ { j["age"] = p.age; } -

    Do not use the details namespace

    The details namespace is not part of the public API of the library and can change in any version without an announcement. Do not rely on any function or type in the details namespace.

    \ No newline at end of file +

    Do not use the details namespace

    The details namespace is not part of the public API of the library and can change in any version without an announcement. Do not rely on any function or type in the details namespace.

    \ No newline at end of file diff --git a/integration/package_managers/index.html b/integration/package_managers/index.html index fdf1df5f4..ad7daecd3 100644 --- a/integration/package_managers/index.html +++ b/integration/package_managers/index.html @@ -330,4 +330,4 @@ cmake --build build set_languages("cxx11")
  • Build

    xmake
     
  • Run

    xmake run
    -

  • Other package managers

    The library is also contained in many other package repositories: Packaging status

    Package version overview

    Packaging status


    Buckaroo

    If you are using Buckaroo, you can install this library's module with buckaroo add github.com/buckaroo-pm/nlohmann-json. There is a demo repo here.

    Warning

    The module is outdated as the respective repository has not been updated in years.

    CocoaPods

    If you are using CocoaPods, you can use the library by adding pod "nlohmann_json", '~>3.1.2' to your podfile (see an example). Please file issues here.

    Warning

    The module is outdated as the respective pod has not been updated in years.

    \ No newline at end of file +

    Other package managers

    The library is also contained in many other package repositories: Packaging status

    Package version overview

    Packaging status


    Buckaroo

    If you are using Buckaroo, you can install this library's module with buckaroo add github.com/buckaroo-pm/nlohmann-json. There is a demo repo here.

    Warning

    The module is outdated as the respective repository has not been updated in years.

    CocoaPods

    If you are using CocoaPods, you can use the library by adding pod "nlohmann_json", '~>3.1.2' to your podfile (see an example). Please file issues here.

    Warning

    The module is outdated as the respective pod has not been updated in years.

    \ No newline at end of file diff --git a/integration/pkg-config/index.html b/integration/pkg-config/index.html index 886a023f9..5da1d3d1c 100644 --- a/integration/pkg-config/index.html +++ b/integration/pkg-config/index.html @@ -1,3 +1,3 @@ Pkg-config - JSON for Modern C++
    Skip to content

    Pkg-config

    If you are using bare Makefiles, you can use pkg-config to generate the include flags that point to where the library is installed:

    pkg-config nlohmann_json --cflags
     

    Users of the Meson build system will also be able to use a system-wide library, which will be found by pkg-config:

    json = dependency('nlohmann_json', required: true)
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index a677cd91d..397c2c1cd 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,950 +2,950 @@ https://json.nlohmann.me/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/operator_gtgt/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/operator_literal_json/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/operator_literal_json_pointer/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/operator_ltlt/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/ordered_json/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/ordered_map/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/adl_serializer/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/adl_serializer/from_json/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/adl_serializer/to_json/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/accept/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/array/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/array_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/at/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/back/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/basic_json/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/begin/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/binary/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/binary_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/boolean_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/cbegin/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/cbor_tag_handler_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/cend/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/clear/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/contains/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/count/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/crbegin/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/crend/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/default_object_comparator_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/diff/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/dump/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/emplace/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/emplace_back/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/empty/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/end/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/end_pos/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/erase/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/error_handler_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/exception/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/find/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/flatten/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/from_bjdata/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/from_bson/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/from_cbor/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/from_msgpack/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/from_ubjson/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/front/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/get/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/get_allocator/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/get_binary/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/get_ptr/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/get_ref/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/get_to/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/input_format_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/insert/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/invalid_iterator/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/is_array/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/is_binary/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/is_boolean/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/is_discarded/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/is_null/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/is_number/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/is_number_float/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/is_number_integer/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/is_number_unsigned/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/is_object/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/is_primitive/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/is_string/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/is_structured/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/items/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/json_base_class_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/json_serializer/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/max_size/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/merge_patch/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/meta/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/number_float_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/number_integer_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/number_unsigned_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/object/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/object_comparator_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/object_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/operator%2B%3D/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/operator%3D/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/operator%5B%5D/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/operator_ValueType/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/operator_eq/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/operator_ge/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/operator_gt/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/operator_le/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/operator_lt/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/operator_ne/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/operator_spaceship/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/operator_value_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/other_error/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/out_of_range/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/parse/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/parse_error/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/parse_event_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/parser_callback_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/patch/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/patch_inplace/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/push_back/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/rbegin/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/rend/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/sax_parse/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/size/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/start_pos/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/std_hash/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/std_swap/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/string_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/swap/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/to_bjdata/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/to_bson/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/to_cbor/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/to_msgpack/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/to_string/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/to_ubjson/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/type/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/type_error/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/type_name/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/unflatten/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/update/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/value/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/value_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/basic_json/~basic_json/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/byte_container_with_subtype/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/byte_container_with_subtype/clear_subtype/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/byte_container_with_subtype/has_subtype/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/byte_container_with_subtype/set_subtype/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/byte_container_with_subtype/subtype/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/back/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/empty/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/json_pointer/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/operator_eq/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/operator_ne/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/operator_slash/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/operator_slasheq/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/operator_string_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/parent_pointer/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/pop_back/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/push_back/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/string_t/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_pointer/to_string/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/binary/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/boolean/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/end_array/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/end_object/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/key/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/null/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/number_float/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/number_integer/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/number_unsigned/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/parse_error/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/start_array/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/start_object/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/json_sax/string/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_assert/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_diagnostic_positions/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_diagnostics/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_disable_enum_serialization/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_has_cpp_11/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_has_filesystem/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_has_ranges/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_has_static_rtti/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_has_three_way_comparison/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_no_io/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_noexception/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_skip_library_version_check/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_skip_unsupported_compiler_check/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_throw_user/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_use_global_udls/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_use_implicit_conversions/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/json_use_legacy_discarded_value_comparison/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/nlohmann_json_namespace/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/nlohmann_json_namespace_begin/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/nlohmann_json_namespace_no_version/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/nlohmann_json_serialize_enum/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/api/macros/nlohmann_json_version_major/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/community/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/community/code_of_conduct/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/community/contribution_guidelines/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/community/governance/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/community/quality_assurance/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/community/security_policy/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/arbitrary_types/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/assertions/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/binary_values/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/comments/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/enum_conversion/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/iterators/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/json_patch/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/json_pointer/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/macros/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/merge_patch/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/modules/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/namespace/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/object_order/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/trailing_commas/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/binary_formats/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/binary_formats/bjdata/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/binary_formats/bson/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/binary_formats/cbor/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/binary_formats/messagepack/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/binary_formats/ubjson/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/element_access/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/element_access/checked_access/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/element_access/default_value/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/element_access/unchecked_access/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/parsing/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/parsing/json_lines/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/parsing/parse_exceptions/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/parsing/parser_callbacks/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/parsing/sax_interface/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/types/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/features/types/number_handling/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/home/architecture/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/home/customers/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/home/design_goals/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/home/exceptions/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/home/faq/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/home/license/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/home/releases/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/home/sponsors/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/integration/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/integration/cmake/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/integration/migration_guide/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/integration/package_managers/ - 2025-10-30 + 2025-11-04 https://json.nlohmann.me/integration/pkg-config/ - 2025-10-30 + 2025-11-04 \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index 6670e571422ad46c320edf95a4ea5ec9ad24f3fe..c18f86ff4ae6b9ebfd407a3d0aa1a9c25f9bb2af 100644 GIT binary patch delta 1563 zcmV+$2ITq94bBY*ABzYG0740o2OkmB251Y%0fM4WkoK0C<<72XkvAZJA0HQecF#U2 zYd)M`U0j}@v5|IEX8v&g+vi{3{&@cJ=DX|Ub>MiGzih&X^KFdo=gsEf;o%~v$P2k} zVg0-ba+_a-&HCo%^5UoSoA1u@qg-JBSAAS-D{snGLcYvxu;#*OyIshbi-kAWoAUAL zw<*NMjyLZv-@Si(b@ldt@`wDD^}YS&H;3#0DW}8N{X%^5c0rW>3yf$H5Ca7z z!NMdZy9m_xo_1h)fxLg9_CWFusg7^`1J4R6uMGJeS|8c`2WvHdlR+X#a3hdI_I)DF zVoPS!?4f1BW(2C|rr?3{)1wm|Q*{pr9p;KvduDx|kQDP&8W zG{wls+b?q^!|h0ak?Qr5iZKFTDSpk@PqZln9zFDQcZYEe<$Gn67k zugr`_NHQi5Z4!|e;QUL?Ov$fV$b9*L^lT~$EOX)nWT8h9G6Il*{mjBqlv^YOawg<- z97DFs=fhYBBu}Fl5(Pbob+v@F!XOFO9KSd3KE3(=mkv0(fO!Au&HD~G#P6gNf8IIn zfQ7$w05SI}P!e+o{Z;55N<#Ng5~hce2#zF&t#Tc(+!w0>9aQ2rdmD9u6bO-`u#=Pg z0w;g41t;*J^Xjl^b%7oQ*g#JbS1h zK(kdc05)?d1Hki!G6Q;TBO{;_mm+k+qo|`j=E`7b0Tx3t@U+V0vP}dQL5-uq^2kB) zPuxbpU1YKD`pF^NgNj=b(tt1w-yr#aP}YCFTOD#`r?*3@z_CXv2odn;iD%M)DS~JE zh+RI<0D7qi+*;7zV;JrNBk1<=`!`5BsT@#H{|v^FFO$w4bRB1%K-)3YeCsoa9-0Lz z%-*M|(IZM0l5u`iha{UH=CdQ0Wu6OBz^NGw^g*>IR(H*xKn^p(QIspN|wb(RW|R3E^x3E zfd-xJLbg(eWPSo1Y;X!yW~roe;_3Zn#tZ3j6fu5{sVtf9%omx z&;!?D>uYtMdmwrmbQij98sukdxFn;RuGbwkr5(9!I>>{@n3_iQrwrMms38>>Ow37* zth2!h5SH2Ic3{XfH7G~C)EI?JB=u2x!tt6Y!ykYq~5K`dgB^+F? z*0vKEHCZ>%x6Xh$Rh0|fF-Ut+>tFjxY!F2W4RVAa@@M%8R{id7ek-k+)PER6>Qmr& N^A}4NH%{7m001F>`a=K! delta 1563 zcmV+$2ITq94bBY*ABzYGfT{wK2Okj=1ZWG#0fM4WkoJ}sac6gFkvAZJpB@)|cF#U2 zYd)S|U0j}@v5|IAX8L&k+m~P8{&@cB=7;O#b>MiGzih(C^EpQM^Jeq#@Nf}SPlORUg;d%A0bPkS}u^thq4S&I=iHvGC@4Q$9ZZ zHifv@;pW}tyAN-#F5kX?zsz4*-`ih)bGZJ$QX;47n~f!{V^7g~F~upOv~{i|Pg)@F z|CB*Et4w|gV~M(XUHE}L50ENYrAs$$t4xCyfxRNF{%Bs?FT_W07ewj5z=#$Bv8A9S zSeT?_7lHcT(+(^zkoOPN-jcjSs^eS#mM4XjSBCr!t&eQ}TWd9clR+X#a3hf0?E6HT z#7t(;?4f1BW&o<^rr?3{)g(RR7h`qRLGV% zYKoDOw_oN;wzmU+MM6VBgSLuLyk;=M5+(;77b->C-lA&*>9bCZ6&IxQe-tMXi-Dd> zC=4!w3&Hb<1&9`>uZ&AkjMgs{k&Z%+pxHz9?@6mc)Rir0zf?hhr?)c!+AtJ^{Ujfh zVNgMmA9#RLn4~orVA-Z44O32HKb;5NFS{emJmuND>6Jwqu% z^vXsN_xa8HUpnCE0^-BxHy=9S5Wka7{AK63 z0~Y?;0mRfQLrF{>^jD#KC<)y|Nthl=A~=#9X5~6yxi3}&I;g}sdmD9u6bO-`u%naw z0w;ekgA;hrd3D&dx|3P9Fm~S=OPU<_Wq-VXAczw zXtqiQz-A6*0C?U|WrM$wu!(ZsBtt{9yuuf ziQ5Rci!9b%KRIN3P;nL^Z4rjyJ0$-P%DR7dt3$5r^ma%UIQB>dAp#yf@k|;pMes}? zvCHQfKra=6TMPPo48vVu1l>M<{|-qfl>-XupTRitWzxBWuH&o|Xgh|QZ+!;QL$g4I z+50p#dPK=WGR}|ckYw|NeA%yxNcw*U0Lgwj5Zp2B<^lQjC)%*Q_LmHpl=hbtplpBk z0|stY`hc)s`GMMlJp$GuK!(AEq;J0Dwu;s}rvTUpcM32lnv4xm$+GyU%I5vh1rC-X z&{k)=kge1qnV$d$8=OLwSt{wAxVi#Ej7oFZg~$sSq$X4aFhsVUrSte06__N>o>@H5 zZcQmy0oq=T70N>OQOA*-QiMC@gjRoBUk=e*k8l=p=H{XAH&EI2O3qmyd8iFWmBVAu zWVsF72a!T^$Mh5;%Zo|dEoqSk9l#`Naau`LHj0?F0ilsJPb7E8{nBfmFWT%py)6bF zmErv4)qUAx)PBL@6{5PDo+B@xLi?So-(xblW_#h-Gy$O2Km_vcy>X$LNw4)UNeq^42*DMPj>YMY7+CZ?nY z*4f|$2+L%1J1}IL8kD2_*OWU&+?9Agc^E}tnS8-;HoFup8|KJVjwlEl@>>E_xH3s99u`r2AjE6FA_Z&*GLgcP`W2?v*} zwe18(O%^xwtutUwRpml=4ANfI`qzFE8$?k;gB&4<{8@g2RlmEN-b!mm^&bY2`V=_c N`~?x>fwbCs000(U=D7d>