diff --git a/api/adl_serializer/from_json/index.html b/api/adl_serializer/from_json/index.html index d791396fc..5ca926f81 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 8302176bc..6587ee5a7 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 9da411dc7..5aa58a607 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 cd909e45f..7bda91a8f 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 636063457..2aa1173a6 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 ecfdd201f..b75570b16 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 a0d022e97..9d55b099e 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 50bcd8a19..1914f2ac2 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 c8891ce1b..e572813f4 100644 --- a/api/basic_json/basic_json/index.html +++ b/api/basic_json/basic_json/index.html @@ -458,4 +458,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 7cd58b20a..487f06bbe 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 3722af3d4..4981e322f 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 98f532d5f..8889172d5 100644 --- a/api/basic_json/binary_t/index.html +++ b/api/basic_json/binary_t/index.html @@ -30,4 +30,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 cfb146615..6fd9e49c2 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 599f5311a..64f4ad7b5 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 c7d723643..fc65431fa 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 9adaf5af5..95ca5faf1 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 4e6e1d536..6afcb6782 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 16c3cac82..adb4a1651 100644 --- a/api/basic_json/contains/index.html +++ b/api/basic_json/contains/index.html @@ -101,4 +101,4 @@ false false false -

See also

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 +

See also

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 aaea10102..9fbf0341b 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
-

See also

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 +

See also

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 952e6742b..abe9df1a6 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 5fe548f0c..f0896c7ce 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 3814130a6..fbfa608c9 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 3525d07ae..13a7feb24 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 6f9c22882..fb4cbe7e8 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: "äü" -

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/emplace/index.html b/api/basic_json/emplace/index.html index 2914acb4d..aaca4e62c 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 -

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/emplace_back/index.html b/api/basic_json/emplace_back/index.html index 618b02f89..dea7289b9 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 5d13342a6..4f1410eca 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 dd8621af0..0d5107041 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 6e8059477..7f07657b3 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 b44cfe030..56d224aea 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]
-

See also

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 +

See also

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 316f01287..d93bf6503 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 dabda440c..75d8ba9ea 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 12393f646..158e62c1a 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 448aa7192..519276627 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/format_as/index.html b/api/basic_json/format_as/index.html index 87206da59..da6d0807b 100644 --- a/api/basic_json/format_as/index.html +++ b/api/basic_json/format_as/index.html @@ -84,4 +84,4 @@ std::cout << j_str << std::endl; }

Output:

{"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/from_bjdata/index.html b/api/basic_json/from_bjdata/index.html index 5cc9b2a19..e75ad5831 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 } -

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_bson/index.html b/api/basic_json/from_bson/index.html index 089d03cd2..c2a3cbf6c 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 1fc1f7dd0..7edaf3857 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 } -

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_msgpack/index.html b/api/basic_json/from_msgpack/index.html index 8423b6872..4397c63d5 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 } -

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_ubjson/index.html b/api/basic_json/from_ubjson/index.html index 36b8a4239..798f34424 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 } -

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/front/index.html b/api/basic_json/front/index.html index 0cda87973..25e70dcca 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 02a543da0..d2367c324 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
-

See also

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 +

See also

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 43396d73c..8afd05cc8 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 4968995d2..25a9cef1f 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
-

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_ptr/index.html b/api/basic_json/get_ptr/index.html index d302b91df..f89935a08 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 49397d7a7..0ffe4cd54 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 e3d75e202..3288cc18f 100644 --- a/api/basic_json/get_to/index.html +++ b/api/basic_json/get_to/index.html @@ -74,4 +74,4 @@ string: "Hello, world!" boolean: true array: [1,2,3,4,5] -

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/index.html b/api/basic_json/index.html index 5de5662f0..d390b392c 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 179ec60f9..2f6d04343 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 f5babdd6a..87d92ff2f 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"}
-

See also

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 +

See also

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 da79dbb93..e136d6379 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 d7d076651..d83bafa6a 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 0c4de90fb..8cd1950f7 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 00cde81bf..216a8fb3c 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 549583edc..7a53c5959 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 3ba59bd86..f36154651 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 9972884d9..6b57fc50a 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 92e46c7b1..60e9b5e5d 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 7a6d5e339..bc7ccad69 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 19bdfa1f4..94535b6e2 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 725ef07cd..7f9c63157 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 155d1c726..3306a8847 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 d8713c8d4..2d00ce02d 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 43dbdc06c..9003489b9 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 bd548754d..79d07c85a 100644 --- a/api/basic_json/items/index.html +++ b/api/basic_json/items/index.html @@ -48,4 +48,4 @@ key: 2, value: 4 key: 3, value: 8 key: 4, value: 16 -

See also

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 +

See also

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 e36def871..1e860042f 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 77992e5ae..5061da7e9 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 7dad40dca..c2385433d 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 60adeced2..bcedc187e 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 466ec2310..6699ea8b5 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 5c0a686cb..9a9640264 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 bf50ce04b..8de3d8338 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 54770ef7c..0cec16a0a 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 81855be59..f36f9c70f 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 137a93ad7..684876cbc 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 1a5476444..4a8d9d033 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 2ab0e7ef8..5b5e67f3f 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 2c9859653..076321b51 100644 --- a/api/basic_json/operator=/index.html +++ b/api/basic_json/operator=/index.html @@ -25,4 +25,4 @@ }

Output:

23
 23
-

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/operator[]/index.html b/api/basic_json/operator[]/index.html index ddc5bc72f..e4d697862 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. Fixed in version 3.13.0 to consistently accept std::string_view-convertible keys, as already supported by at, value, find, and other lookup functions.
  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. Fixed in version 3.13.0 to consistently accept std::string_view-convertible keys, as already supported by at, value, find, and other lookup functions.
  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 8b1c476d2..72998e78f 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 -

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/operator_eq/index.html b/api/basic_json/operator_eq/index.html index 465e6447c..aac182192 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 -

See also

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 +

See also

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 1d7c1873d..8aa1a7287 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 5535f29e1..383e1e5ff 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 b7964aaef..39c4b0a83 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 88b6fbead..05de625a2 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 8a4bb9c65..4682615cf 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. Changed in version 3.13.0 to remove special-casing for NaN and discarded values; operator!= now consistently means !(a == b).
  2. Added in version 1.0.0. Added C++20 member functions in version 3.11.0. Changed in version 3.13.0 to remove special-casing for NaN and discarded values; operator!= now consistently means !(a == b).
\ 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. Changed in version 3.13.0 to remove special-casing for NaN and discarded values; operator!= now consistently means !(a == b).
  2. Added in version 1.0.0. Added C++20 member functions in version 3.11.0. Changed in version 3.13.0 to remove special-casing for NaN and discarded values; operator!= now consistently means !(a == b).
\ 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 122cb2711..2ee0666b6 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 87feda561..216b39f17 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 41dc2b6fb..c98c6ebbb 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 95fc2dc8c..03f4cb630 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 f312d2d82..28b0402f2 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 d2719af1f..ee3bdd99e 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 9e0da1717..b9cd12cc7 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

See also

Version history

\ No newline at end of file +

The parser callback distinguishes the following events:

Examples

Example when certain parse events are triggered

See also

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 92d4727cd..49aee2b24 100644 --- a/api/basic_json/parser_callback_t/index.html +++ b/api/basic_json/parser_callback_t/index.html @@ -135,4 +135,4 @@ {"IDs":[116,943]} {"IDs":[116,943]} 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/basic_json/patch/index.html b/api/basic_json/patch/index.html index fa7838a96..85443382b 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 f125d1de9..05182e595 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 9c1ad800e..6d78e5fbb 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 bc9cd6462..5edf5fba3 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 76b71b6cc..54c62eac2 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 573a97c97..952e9e8b9 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 -

See also

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 +

See also

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 31c176c88..4ff934784 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 f3d07d968..f315f68ed 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_formatter/index.html b/api/basic_json/std_formatter/index.html index b23f24681..89fe9fce6 100644 --- a/api/basic_json/std_formatter/index.html +++ b/api/basic_json/std_formatter/index.html @@ -40,4 +40,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/std_hash/index.html b/api/basic_json/std_hash/index.html index a80dfbdf2..dce365818 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 23060be43..66f252dc9 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 85550f332..b9d0f1eee 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 32e03930e..aa6976524 100644 --- a/api/basic_json/swap/index.html +++ b/api/basic_json/swap/index.html @@ -136,4 +136,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 f1c5ff904..2d47f4608 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 -

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/to_bson/index.html b/api/basic_json/to_bson/index.html index 3fd3523e9..c9f138db9 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 
-

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/to_cbor/index.html b/api/basic_json/to_cbor/index.html index 6ca730310..8fbaa7422 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 
-

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/to_msgpack/index.html b/api/basic_json/to_msgpack/index.html index ec31b612e..b00535c4c 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 
-

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/to_string/index.html b/api/basic_json/to_string/index.html index 25e199cbb..2698fa0c3 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 63d7b66ec..011b4ebd2 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 -

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/index.html b/api/basic_json/type/index.html index 469171c74..1b38801d0 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 7c7821cef..b4c7d69cf 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 06ec586c4..836638a14 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 66c5bac15..98bd2e1c5 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 ecd39db22..13cdfef4a 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"} } -

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/value/index.html b/api/basic_json/value/index.html index 46757b5eb..e4ccf1c33 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. Extended to work with arrays in version 3.13.0, including fixing an issue where resolving ptr through an array unexpectedly threw out_of_range instead of returning the resolved element (or default_value, as documented).
\ 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. Extended to work with arrays in version 3.13.0, including fixing an issue where resolving ptr through an array unexpectedly threw out_of_range instead of returning the resolved element (or default_value, as documented).
\ 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 136131909..23f4fa38e 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 e3e3181d2..70898364e 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 d872cb29b..266875a9b 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 80827ae07..48f979b7c 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 afcba971b..431551d4d 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 202470c65..25dff7e21 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 8046f9367..ffef6aa67 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 fa773c218..4b90c1ef3 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 936fa13e0..032248b37 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 579096462..fbcc5ff84 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 866d75714..9be75b103 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/front/index.html b/api/json_pointer/front/index.html index 3ed039c84..c16d75d07 100644 --- a/api/json_pointer/front/index.html +++ b/api/json_pointer/front/index.html @@ -16,4 +16,4 @@ }

Output:

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

Version history

\ No newline at end of file +

Version history

\ No newline at end of file diff --git a/api/json_pointer/index.html b/api/json_pointer/index.html index e5ef15925..37058df90 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

  • (constructor)
  • to_string - return a string representation of the JSON pointer
  • operator string_t - return a string representation of the JSON pointer
  • operator== - compare: equal
  • operator!= - compare: not equal
  • operator/= - append to the end of the JSON pointer
  • operator/ - create JSON Pointer by appending
  • parent_pointer - returns the parent of this JSON pointer
  • pop_back - remove the last reference token
  • back - return last reference token
  • push_back - append an unescaped token at the end of the pointer
  • pop_front - remove the first reference token
  • front - return first reference token
  • push_front - append an unescaped token at the start of the pointer
  • empty - return whether the pointer points to the root document

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 4496c3f5e..729c39f18 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 a18253a34..b265ab250 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 213a073dc..aa9444534 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 19270700d..effcd9730 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 486639178..0fd1b88fa 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 14701482d..8723d882f 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 95e73d625..fe701d0e4 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"
-

See also

Version history

Added in version 3.6.0.

\ No newline at end of file +

See also

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 6fc5d4e0d..c6042e7d8 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/pop_front/index.html b/api/json_pointer/pop_front/index.html index d2391a585..5e4b1ceb0 100644 --- a/api/json_pointer/pop_front/index.html +++ b/api/json_pointer/pop_front/index.html @@ -24,4 +24,4 @@ "/bar/baz" "/baz" "" -

Version history

\ No newline at end of file +

Version history

\ 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 bc4ba6fd4..99560142e 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/push_front/index.html b/api/json_pointer/push_front/index.html index 26f842e4b..bdf40c257 100644 --- a/api/json_pointer/push_front/index.html +++ b/api/json_pointer/push_front/index.html @@ -26,4 +26,4 @@ "/foo" "/0/foo" "/bar/0/foo" -

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 677663855..e5291c9c5 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 87d4d7275..b4da23ca8 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 a9b1c3168..05458bcfc 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 5559f4f8f..c2ea4c4fa 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 f5db3e0bf..9156d14eb 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 002a0aec5..c46664000 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 e3b3d859a..cb18ba3b7 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 e1617e1ca..f613d6d08 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 2f3108586..93178e0c7 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 9aab97f3a..3ffa3a8fa 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 0b782b964..376cc6ed9 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 0bca8ccfc..aa4f7d09d 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 1686853a3..ac3632b2b 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 6d5ddcff1..5210cef63 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 6d8d07eeb..feb1e3316 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 2e842cd56..ffad924aa 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 9b719d0be..b5b826a70 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 d6155b41f..9948f1121 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_brace_init_copy_semantics/index.html b/api/macros/json_brace_init_copy_semantics/index.html index 40ac4f5b4..edab98367 100644 --- a/api/macros/json_brace_init_copy_semantics/index.html +++ b/api/macros/json_brace_init_copy_semantics/index.html @@ -26,4 +26,4 @@ json j{obj}; // j is {"key":"value"} -- copy of obj } -

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 f9d4df12d..9cdd26a3b 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 79307c20e..c28f4db3d 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 71dc81ec0..626680c07 100644 --- a/api/macros/json_disable_enum_serialization/index.html +++ b/api/macros/json_disable_enum_serialization/index.html @@ -88,4 +88,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 494592290..9e05b6bb6 100644 --- a/api/macros/json_has_cpp_11/index.html +++ b/api/macros/json_has_cpp_11/index.html @@ -8,4 +8,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 fd7c747bb..304651472 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 3dd827e16..b39cfeb35 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 2340195d1..d49730b3e 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_std_format/index.html b/api/macros/json_has_std_format/index.html index 24bcbb249..40ee41ff6 100644 --- a/api/macros/json_has_std_format/index.html +++ b/api/macros/json_has_std_format/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 7fc88579f..838290de2 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 9cd77ba7a..e971c4b26 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 c520b53fc..f7a06288d 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 7fbb08dc1..a78cfe37c 100644 --- a/api/macros/json_skip_library_version_check/index.html +++ b/api/macros/json_skip_library_version_check/index.html @@ -5,4 +5,4 @@ ...

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 de9328588..a8cbc5d2d 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 9da6dc6c1..c9ecfa626 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 2c974491a..a47d344a5 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 52caf4b24..7b08948be 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 798dff9d4..558174948 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/json_use_simdutf/index.html b/api/macros/json_use_simdutf/index.html index 174920768..35f05a560 100644 --- a/api/macros/json_use_simdutf/index.html +++ b/api/macros/json_use_simdutf/index.html @@ -6,4 +6,4 @@ ...

The project must also link against simdutf, e.g. with CMake:

target_compile_definitions(your_target PRIVATE JSON_USE_SIMDUTF)
 target_link_libraries(your_target PRIVATE simdutf::simdutf)
-

Testing this configuration

The unit tests can be built against the simdutf backend with the CMake option JSON_TestSimdutf (OFF by default), which fetches simdutf and defines JSON_USE_SIMDUTF for every test target. The ci_test_simdutf target runs the whole test suite in that configuration.

Version history

\ No newline at end of file +

Testing this configuration

The unit tests can be built against the simdutf backend with the CMake option JSON_TestSimdutf (OFF by default), which fetches simdutf and defines JSON_USE_SIMDUTF for every test target. The ci_test_simdutf target runs the whole test suite in that configuration.

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 35ad5aed0..60f9abc62 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 e1675fa77..d8b7361a7 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 c799babf4..babe41a88 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_define_type_with_names/index.html b/api/macros/nlohmann_define_type_with_names/index.html index af473f3e3..58ad05af3 100644 --- a/api/macros/nlohmann_define_type_with_names/index.html +++ b/api/macros/nlohmann_define_type_with_names/index.html @@ -108,4 +108,4 @@ std::cout << "deserialization failed: " << e.what() << std::endl; } } -

Version history

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

Version history

  1. Added in version 3.13.0.
\ 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 d4c1e76d6..878a033be 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 7143e0c5c..c99e52f5f 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 2950d352f..15d431049 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 c3cbb7bb4..cd4268556 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_serialize_enum_strict/index.html b/api/macros/nlohmann_json_serialize_enum_strict/index.html index 26c8a55a4..a87102718 100644 --- a/api/macros/nlohmann_json_serialize_enum_strict/index.html +++ b/api/macros/nlohmann_json_serialize_enum_strict/index.html @@ -148,4 +148,4 @@ }

Output:

deserialization failed: [json.exception.out_of_range.410] enum value out of range for Color
 deserialization failed: [json.exception.out_of_range.410] enum value out of range for Color: "what"
-

See also

Version history

Added in version 3.13.0.

\ No newline at end of file +

See also

Version history

Added in version 3.13.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 176d5e7f9..52698a3fb 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 9ef593c22..08fd6d280 100644 --- a/api/operator_gtgt/index.html +++ b/api/operator_gtgt/index.html @@ -49,4 +49,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 4ad5671e3..7767a2e82 100644 --- a/api/operator_literal_json/index.html +++ b/api/operator_literal_json/index.html @@ -22,4 +22,4 @@ "answer": 42, "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_pointer/index.html b/api/operator_literal_json_pointer/index.html index feeb18b02..dddf37636 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 e0c8cbac9..3fae3ef25 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
-

See also

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 +

See also

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 479fc272a..cb1e3bceb 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 6153a2655..104eb0e7d 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/assets/external/repology.org/badge/tiny-repos/nlohmann-json.svg b/assets/external/repology.org/badge/tiny-repos/nlohmann-json.svg deleted file mode 100644 index 95e27daa7..000000000 --- a/assets/external/repology.org/badge/tiny-repos/nlohmann-json.svg +++ /dev/null @@ -1 +0,0 @@ -in repositoriesin repositories4646 \ No newline at end of file diff --git a/assets/external/repology.org/badge/version-for-repo/conancenter/nlohmann-json.svg b/assets/external/repology.org/badge/version-for-repo/conancenter/nlohmann-json.svg deleted file mode 100644 index 02d0911da..000000000 --- a/assets/external/repology.org/badge/version-for-repo/conancenter/nlohmann-json.svg +++ /dev/null @@ -1 +0,0 @@ -ConanCenter packageConanCenter package3.12.03.12.0 \ No newline at end of file diff --git a/assets/external/repology.org/badge/version-for-repo/homebrew/nlohmann-json.svg b/assets/external/repology.org/badge/version-for-repo/homebrew/nlohmann-json.svg deleted file mode 100644 index 7863cba79..000000000 --- a/assets/external/repology.org/badge/version-for-repo/homebrew/nlohmann-json.svg +++ /dev/null @@ -1 +0,0 @@ -Homebrew packageHomebrew package3.12.03.12.0 \ No newline at end of file diff --git a/assets/external/repology.org/badge/version-for-repo/macports/nlohmann-json.svg b/assets/external/repology.org/badge/version-for-repo/macports/nlohmann-json.svg deleted file mode 100644 index a45e76aca..000000000 --- a/assets/external/repology.org/badge/version-for-repo/macports/nlohmann-json.svg +++ /dev/null @@ -1 +0,0 @@ -MacPorts packageMacPorts package3.12.03.12.0 \ No newline at end of file diff --git a/assets/external/repology.org/badge/version-for-repo/msys2_clang64/nlohmann-json.svg b/assets/external/repology.org/badge/version-for-repo/msys2_clang64/nlohmann-json.svg deleted file mode 100644 index 51ab73a43..000000000 --- a/assets/external/repology.org/badge/version-for-repo/msys2_clang64/nlohmann-json.svg +++ /dev/null @@ -1 +0,0 @@ -MSYS2 clang64 packageMSYS2 clang64 package3.12.03.12.0 \ No newline at end of file diff --git a/assets/external/repology.org/badge/version-for-repo/msys2_clangarm64/nlohmann-json.svg b/assets/external/repology.org/badge/version-for-repo/msys2_clangarm64/nlohmann-json.svg deleted file mode 100644 index 0e9d05fe4..000000000 --- a/assets/external/repology.org/badge/version-for-repo/msys2_clangarm64/nlohmann-json.svg +++ /dev/null @@ -1 +0,0 @@ -MSYS2 clangarm64 packageMSYS2 clangarm64 package3.12.03.12.0 \ No newline at end of file diff --git a/assets/external/repology.org/badge/version-for-repo/msys2_mingw/nlohmann-json.svg b/assets/external/repology.org/badge/version-for-repo/msys2_mingw/nlohmann-json.svg deleted file mode 100644 index 1f7615161..000000000 --- a/assets/external/repology.org/badge/version-for-repo/msys2_mingw/nlohmann-json.svg +++ /dev/null @@ -1 +0,0 @@ -MSYS2 mingw packageMSYS2 mingw package3.12.03.12.0 \ No newline at end of file diff --git a/assets/external/repology.org/badge/version-for-repo/msys2_ucrt64/nlohmann-json.svg b/assets/external/repology.org/badge/version-for-repo/msys2_ucrt64/nlohmann-json.svg deleted file mode 100644 index ca1bc50fd..000000000 --- a/assets/external/repology.org/badge/version-for-repo/msys2_ucrt64/nlohmann-json.svg +++ /dev/null @@ -1 +0,0 @@ -MSYS2 ucrt64 packageMSYS2 ucrt64 package3.12.03.12.0 \ No newline at end of file diff --git a/assets/external/repology.org/badge/version-for-repo/spack/nlohmann-json.svg b/assets/external/repology.org/badge/version-for-repo/spack/nlohmann-json.svg deleted file mode 100644 index 61574878e..000000000 --- a/assets/external/repology.org/badge/version-for-repo/spack/nlohmann-json.svg +++ /dev/null @@ -1 +0,0 @@ -Spack packageSpack package3.12.03.12.0 \ No newline at end of file diff --git a/assets/external/repology.org/badge/version-for-repo/vcpkg/nlohmann-json.svg b/assets/external/repology.org/badge/version-for-repo/vcpkg/nlohmann-json.svg deleted file mode 100644 index 2e2d083c6..000000000 --- a/assets/external/repology.org/badge/version-for-repo/vcpkg/nlohmann-json.svg +++ /dev/null @@ -1 +0,0 @@ -Vcpkg packageVcpkg package3.12.03.12.0 \ No newline at end of file diff --git a/assets/external/repology.org/badge/vertical-allrepos/nlohmann-json.svg b/assets/external/repology.org/badge/vertical-allrepos/nlohmann-json.svg deleted file mode 100644 index 046ffff39..000000000 --- a/assets/external/repology.org/badge/vertical-allrepos/nlohmann-json.svg +++ /dev/null @@ -1 +0,0 @@ -Packaging statusPackaging statusAdélie Linux currentAdélie Linux current3.11.33.11.3aerynOSaerynOS3.12.03.12.0Alpine Linux 3.17Alpine Linux 3.173.11.23.11.2Alpine Linux 3.18Alpine Linux 3.183.11.23.11.2Alpine Linux 3.19Alpine Linux 3.193.11.33.11.3Alpine Linux 3.20Alpine Linux 3.203.11.33.11.3Alpine Linux 3.21Alpine Linux 3.213.11.33.11.3Alpine Linux 3.22Alpine Linux 3.223.11.33.11.3Alpine Linux 3.23Alpine Linux 3.233.11.33.11.3Alpine Linux 3.24Alpine Linux 3.243.11.33.11.3Alpine Linux EdgeAlpine Linux Edge3.12.03.12.0ALT Linux p11ALT Linux p113.11.33.11.3ALT SisyphusALT Sisyphus3.12.03.12.0AOSCAOSC3.12.03.12.0Apertis v2023Apertis v20233.9.13.9.1Apertis v2024Apertis v20243.11.23.11.2Apertis v2025Apertis v20253.11.23.11.2Apertis v2026Apertis v20263.11.33.11.3Apertis v2027 DevelopmentApertis v2027 Development3.11.33.11.3Arch LinuxArch Linux3.12.03.12.0ArchPOWER powerpcArchPOWER powerpc3.12.03.12.0ArchPOWER powerpc64leArchPOWER powerpc64le3.12.03.12.0AURAUR3.12.03.12.0ArtixArtix3.12.03.12.0Chimera LinuxChimera Linux3.12.03.12.0ConanCenterConanCenter3.12.03.12.0CRUX 3.7CRUX 3.73.12.03.12.0CRUX 3.8CRUX 3.83.12.03.12.0Debian 11Debian 113.9.13.9.1Debian 12Debian 123.11.23.11.2Debian 13Debian 133.11.33.11.3Debian 14Debian 143.12.0.reall…3.12.0.reall…Debian UnstableDebian Unstable3.12.0.reall…3.12.0.reall…Debian ExperimentalDebian Experimental3.12.0.reall…3.12.0.reall…deepin 20deepin 203.9.13.9.1deepin 23deepin 233.11.33.11.3deepin 25deepin 253.11.33.11.3Devuan 4.0Devuan 4.03.9.13.9.1Devuan UnstableDevuan Unstable3.12.0.reall…3.12.0.reall…EPEL 7EPEL 73.6.13.6.1EPEL 8EPEL 83.6.13.6.1EPEL 9EPEL 93.11.33.11.3EPEL 10EPEL 103.11.33.11.3ExherboExherbo3.12.03.12.0Fedora 39Fedora 393.11.23.11.2Fedora 40Fedora 403.11.33.11.3Fedora 41Fedora 413.11.33.11.3Fedora 42Fedora 423.11.33.11.3Fedora 43Fedora 433.11.33.11.3Fedora 44Fedora 443.12.03.12.0Fedora RawhideFedora Rawhide3.12.03.12.0FreeBSD PortsFreeBSD Ports3.12.03.12.0GentooGentoo3.12.03.12.0GNU GuixGNU Guix3.12.03.12.0HaikuPorts masterHaikuPorts master3.12.03.12.0HomebrewHomebrew3.12.03.12.0Kali Linux RollingKali Linux Rolling3.12.0.reall…3.12.0.reall…KaOSKaOS3.12.03.12.0LiGurOS stableLiGurOS stable3.12.03.12.0LiGurOS developLiGurOS develop3.12.03.12.0MacPortsMacPorts3.12.03.12.0Mageia 10Mageia 103.12.03.12.0Mageia 9Mageia 93.11.23.11.2Mageia cauldronMageia cauldron3.12.03.12.0Manjaro StableManjaro Stable3.12.03.12.0Manjaro TestingManjaro Testing3.12.03.12.0Manjaro UnstableManjaro Unstable3.12.03.12.0MSYS2 clang64MSYS2 clang643.12.03.12.0MSYS2 clangarm64MSYS2 clangarm643.12.03.12.0MSYS2 mingwMSYS2 mingw3.12.03.12.0MSYS2 ucrt64MSYS2 ucrt643.12.03.12.0nixpkgs stable 24.05nixpkgs stable 24.053.11.33.11.3nixpkgs stable 24.11nixpkgs stable 24.113.11.33.11.3nixpkgs stable 25.05nixpkgs stable 25.053.11.33.11.3nixpkgs stable 25.11nixpkgs stable 25.113.12.03.12.0nixpkgs stable 26.05nixpkgs stable 26.053.12.03.12.0nixpkgs unstablenixpkgs unstable3.12.03.12.0OpenBSD PortsOpenBSD Ports3.12.03.12.0OpenIndiana packagesOpenIndiana packages3.12.03.12.0openKylin 2.0openKylin 2.03.11.33.11.3openKylin 3.0openKylin 3.03.12.0.reall…3.12.0.reall…openmambaopenmamba3.12.03.12.0OpenMandriva 6.0OpenMandriva 6.03.12.03.12.0OpenMandriva RollingOpenMandriva Rolling3.12.03.12.0OpenMandriva CookerOpenMandriva Cooker3.12.03.12.0openSUSE Leap 15.5openSUSE Leap 15.53.11.23.11.2openSUSE Leap 15.6openSUSE Leap 15.63.11.23.11.2openSUSE TumbleweedopenSUSE Tumbleweed3.12.03.12.0openSUSE hardware:sdr TumbleweedopenSUSE hardware:sdr Tumbleweed3.12.03.12.0PackMan SLE 12PackMan SLE 123.1.23.1.2ParabolaParabola3.12.03.12.0Pardus 21Pardus 213.9.13.9.1ParrotParrot3.11.33.11.3PCLinuxOSPCLinuxOS3.12.03.12.0Pisi LinuxPisi Linux3.11.23.11.2pkgsrc-2026Q1pkgsrc-2026Q13.12.03.12.0pkgsrc-2026Q2pkgsrc-2026Q23.12.03.12.0pkgsrc currentpkgsrc current3.12.03.12.0PLD LinuxPLD Linux3.11.33.11.3PTXdistPTXdist3.12.03.12.0PureOS amberPureOS amber3.5.03.5.0PureOS byzantiumPureOS byzantium3.9.13.9.1PureOS landingPureOS landing3.11.33.11.3Raspbian OldstableRaspbian Oldstable3.11.23.11.2Raspbian StableRaspbian Stable3.11.33.11.3Raspbian TestingRaspbian Testing3.12.0.reall…3.12.0.reall…RavenportsRavenports3.12.03.12.0Rosa 2021.1Rosa 2021.13.11.33.11.3Rosa 13Rosa 133.11.33.11.3SerenityOSSerenityOS3.12.03.12.0SlackBuildsSlackBuilds3.11.33.11.3Slackware currentSlackware current3.12.03.12.0Slackware64 currentSlackware64 current3.12.03.12.0SolusSolus3.12.03.12.0SpackSpack3.12.03.12.0stal/IXstal/IX3.12.03.12.0stal/IX devstal/IX dev3.12.03.12.0T2 SDET2 SDE3.12.03.12.0TermuxTermux3.12.03.12.0Trisquel 10.0Trisquel 10.03.7.33.7.3Trisquel 11.0Trisquel 11.03.10.53.10.5Ubuntu 18.04Ubuntu 18.042.1.12.1.1Ubuntu 20.04Ubuntu 20.043.7.33.7.3Ubuntu 22.04Ubuntu 22.043.10.53.10.5Ubuntu 24.04Ubuntu 24.043.11.33.11.3Ubuntu 25.04Ubuntu 25.043.11.33.11.3Ubuntu 25.10Ubuntu 25.103.12.03.12.0Ubuntu 26.04Ubuntu 26.043.12.0.reall…3.12.0.reall…Ubuntu 26.10Ubuntu 26.103.12.0.reall…3.12.0.reall…VcpkgVcpkg3.12.03.12.0Void Linux x86_64Void Linux x86_643.12.03.12.0Vylen LinuxVylen Linux3.12.03.12.0xrepoxrepo3.12.03.12.0 \ No newline at end of file diff --git a/community/code_of_conduct/index.html b/community/code_of_conduct/index.html index 833782941..b25433081 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 e4e4f7f10..8e5ca11d6 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-regression3.cpp and add a section referencing the fixed issue. unit-regression2.cpp holds the older tests; the two files exist because a single one grew large enough for the MinGW linker to fail relocating it, so please keep adding to the smaller file rather than growing the larger one.

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/ecosystem/index.html b/community/ecosystem/index.html index 534097a6d..5057adc50 100644 --- a/community/ecosystem/index.html +++ b/community/ecosystem/index.html @@ -1 +1 @@ - Ecosystem - JSON for Modern C++
Skip to content

Ecosystem

The projects below build on top of nlohmann::json rather than merely using it - schema validators, language bindings, format converters, and similar building blocks. The list is not exhaustive, and is curated rather than automatically generated. If you maintain or know of a project that belongs here, please let me know.

For products, applications, and organizations that use the library, see Customers instead.

Schema validation

Serialization and reflection

  • nlohmann_json_reflect, a reflection extension for (de)serializing nested containers-in-structs-in-containers

Encodings

  • base-encode-decode, a header-only Base64/32/16/8/4/2 (and DNA/RNA) encoding library, with an adapter that serializes binary data through nlohmann::json

Language bindings and interop

Format converters

  • tojson, a header-only converter between YAML/XML documents and nlohmann::json
  • json2xml, a header-only converter from nlohmann::json to XML for simple configuration documents
\ No newline at end of file + Ecosystem - JSON for Modern C++
Skip to content

Ecosystem

The projects below build on top of nlohmann::json rather than merely using it - schema validators, language bindings, format converters, and similar building blocks. The list is not exhaustive, and is curated rather than automatically generated. If you maintain or know of a project that belongs here, please let me know.

For products, applications, and organizations that use the library, see Customers instead.

Schema validation

Serialization and reflection

  • nlohmann_json_reflect, a reflection extension for (de)serializing nested containers-in-structs-in-containers

Encodings

  • base-encode-decode, a header-only Base64/32/16/8/4/2 (and DNA/RNA) encoding library, with an adapter that serializes binary data through nlohmann::json

Language bindings and interop

Format converters

  • tojson, a header-only converter between YAML/XML documents and nlohmann::json
  • json2xml, a header-only converter from nlohmann::json to XML for simple configuration documents
\ No newline at end of file diff --git a/community/governance/index.html b/community/governance/index.html index 29ffa3edf..409272115 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 2c2c9ec6e..713403c2d 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 c9ef1d1d1..635a5c9fe 100644 --- a/community/quality_assurance/index.html +++ b/community/quality_assurance/index.html @@ -554,4 +554,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 3dfff5125..7eaa6d838 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.

    Unofficial packages

    This project does not publish an official npm package. The npm package nlohmann-json (or similarly named packages) is not maintained or endorsed by this project. See the package managers documentation for supported integration options.

    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.

    Unofficial packages

    This project does not publish an official npm package. The npm package nlohmann-json (or similarly named packages) is not maintained or endorsed by this project. See the package managers documentation for supported integration options.

    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 f8d4cd620..363f58ec6 100644 --- a/features/arbitrary_types/index.html +++ b/features/arbitrary_types/index.html @@ -204,4 +204,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 092f9c5cd..8d257974a 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 941bc9e39..1868efad3 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 88e206f6e..4da6a2075 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 e722ecb0a..765c71438 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 01ca3573c..14c74c5ee 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+type) 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+type) 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 8cf94356c..daabab425 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 5688a2a17..c10bb2e0f 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 b962a2f1f..880bbd9ab 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 3a4134a9c..c18618266 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/conversions/index.html b/features/conversions/index.html index afcb0d54a..b3dd871a1 100644 --- a/features/conversions/index.html +++ b/features/conversions/index.html @@ -113,4 +113,4 @@

    Constructing from a C++20 range view

    A json array can also be constructed directly from a C++20 range view (std::ranges::view), such as the result of std::views::filter or std::views::transform -- no intermediate container is needed:

    std::vector<int> nums{1, 2, 37, 42, 21};
     auto filtered = nums | std::views::filter([](int i) { return i > 10; });
     json j(filtered);   // [37,42,21]
    -

    This requires JSON_HAS_RANGES to be enabled and is unavailable on MinGW due to incomplete C++20 ranges support there.

    Your own types

    The conversions above are built in for standard types. To make the same syntax work for your own types, provide to_json/from_json functions (or use one of the convenience macros). This is described in detail on the arbitrary types conversions page. Enums can be mapped to strings as described in specializing enum conversion.

    See also

    \ No newline at end of file +

    This requires JSON_HAS_RANGES to be enabled and is unavailable on MinGW due to incomplete C++20 ranges support there.

    Your own types

    The conversions above are built in for standard types. To make the same syntax work for your own types, provide to_json/from_json functions (or use one of the convenience macros). This is described in detail on the arbitrary types conversions page. Enums can be mapped to strings as described in specializing enum conversion.

    See also

    \ No newline at end of file diff --git a/features/creating_values/index.html b/features/creating_values/index.html index 7a07624c1..ba6b555dd 100644 --- a/features/creating_values/index.html +++ b/features/creating_values/index.html @@ -42,4 +42,4 @@ "answer": 42, "hello": "world" } -

    Note this parses the string, so "42"_json is the number 42, whereas json("42") is the JSON string "42".

    See also

    \ No newline at end of file +

    Note this parses the string, so "42"_json is the number 42, whereas json("42") is the JSON string "42".

    See also

    \ 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 4603a6a6f..693be08f7 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 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

    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

    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 efb064854..c0ef5c066 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 3cdee695d..ccca85b02 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 f54dba5f4..ca1e0af21 100644 --- a/features/element_access/unchecked_access/index.html +++ b/features/element_access/unchecked_access/index.html @@ -24,4 +24,4 @@ for (int i = 0; i < 1000; ++i) { j.push_back(i); } -

    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 +

    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 7e90b3671..7fc738a89 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/index.html b/features/index.html index 73d6fd082..9f1398791 100644 --- a/features/index.html +++ b/features/index.html @@ -1 +1 @@ - Features - JSON for Modern C++
    Skip to content

    Features

    This section describes the features of the library in detail. If you are new to the library, the pages below are roughly ordered along a typical workflow: create or parse a value, access and modify it, convert it to and from your own C++ types, and finally serialize it again.

    Creating and reading values

    Accessing and modifying values

    Converting to and from C++ types

    Serializing values

    How values are stored and configured

    Looking for a specific function?

    This section gives conceptual overviews. For the precise signature, parameters, and return value of a function, see the API Documentation.

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

    Features

    This section describes the features of the library in detail. If you are new to the library, the pages below are roughly ordered along a typical workflow: create or parse a value, access and modify it, convert it to and from your own C++ types, and finally serialize it again.

    Creating and reading values

    Accessing and modifying values

    Converting to and from C++ types

    Serializing values

    How values are stored and configured

    Looking for a specific function?

    This section gives conceptual overviews. For the precise signature, parameters, and return value of a function, see the API Documentation.

    \ No newline at end of file diff --git a/features/iterators/index.html b/features/iterators/index.html index ccf3767ae..0d30420a1 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 162414c04..62e3fb3dc 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 3f589a620..1b320962d 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 c34f035c9..7a3be7b09 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_BRACE_INIT_COPY_SEMANTICS

    When defined to 1, single-element brace initialization of a basic_json value (e.g., json j{value};) is treated as a copy/move of the element rather than wrapping it in a single-element array. The default value is 0, which preserves the existing behavior.

    See full documentation of JSON_BRACE_INIT_COPY_SEMANTICS.

    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, JSON_HAS_CPP_23, JSON_HAS_CPP_26

    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, JSON_HAS_CPP_20, JSON_HAS_CPP_23, and JSON_HAS_CPP_26.

    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.

    JSON_USE_GLOBAL_UDLS

    When defined to 1 (default), the user-defined string literals operator""_json and operator""_json_pointer are placed into the global namespace instead of nlohmann::literals::json_literals.

    See full documentation of JSON_USE_GLOBAL_UDLS.

    JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON

    When defined to 1, the library restores the legacy behavior in which a discarded value compared equal to itself. This behavior is deprecated and switched off (0) by default.

    See full documentation of JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON.

    JSON_USE_SIMDUTF

    When defined, UTF-8 validation of JSON strings read from contiguous byte input is delegated to the simdutf library instead of the built-in scalar validator. This is an opt-in external dependency and is not defined by default.

    See full documentation of JSON_USE_SIMDUTF.

    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_NAMESPACE, NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END, NLOHMANN_JSON_NAMESPACE_NO_VERSION

    These macros relate to the versioned, inline nlohmann namespace:

    • NLOHMANN_JSON_NAMESPACE evaluates to the full name of the nlohmann namespace (including the inline ABI namespace).
    • NLOHMANN_JSON_NAMESPACE_BEGIN / NLOHMANN_JSON_NAMESPACE_END open and close the namespace (for example, to add specializations).
    • NLOHMANN_JSON_NAMESPACE_NO_VERSION, when defined to 1, omits the version component from the inline namespace.

    See the nlohmann Namespace page, and the full documentation of NLOHMANN_JSON_NAMESPACE, NLOHMANN_JSON_NAMESPACE_BEGIN / NLOHMANN_JSON_NAMESPACE_END, and NLOHMANN_JSON_NAMESPACE_NO_VERSION.

    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.

    A strict variant NLOHMANN_JSON_SERIALIZE_ENUM_STRICT throws an exception on undefined input instead of falling back to the first mapping.

    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_BRACE_INIT_COPY_SEMANTICS

    When defined to 1, single-element brace initialization of a basic_json value (e.g., json j{value};) is treated as a copy/move of the element rather than wrapping it in a single-element array. The default value is 0, which preserves the existing behavior.

    See full documentation of JSON_BRACE_INIT_COPY_SEMANTICS.

    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, JSON_HAS_CPP_23, JSON_HAS_CPP_26

    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, JSON_HAS_CPP_20, JSON_HAS_CPP_23, and JSON_HAS_CPP_26.

    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.

    JSON_USE_GLOBAL_UDLS

    When defined to 1 (default), the user-defined string literals operator""_json and operator""_json_pointer are placed into the global namespace instead of nlohmann::literals::json_literals.

    See full documentation of JSON_USE_GLOBAL_UDLS.

    JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON

    When defined to 1, the library restores the legacy behavior in which a discarded value compared equal to itself. This behavior is deprecated and switched off (0) by default.

    See full documentation of JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON.

    JSON_USE_SIMDUTF

    When defined, UTF-8 validation of JSON strings read from contiguous byte input is delegated to the simdutf library instead of the built-in scalar validator. This is an opt-in external dependency and is not defined by default.

    See full documentation of JSON_USE_SIMDUTF.

    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_NAMESPACE, NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END, NLOHMANN_JSON_NAMESPACE_NO_VERSION

    These macros relate to the versioned, inline nlohmann namespace:

    • NLOHMANN_JSON_NAMESPACE evaluates to the full name of the nlohmann namespace (including the inline ABI namespace).
    • NLOHMANN_JSON_NAMESPACE_BEGIN / NLOHMANN_JSON_NAMESPACE_END open and close the namespace (for example, to add specializations).
    • NLOHMANN_JSON_NAMESPACE_NO_VERSION, when defined to 1, omits the version component from the inline namespace.

    See the nlohmann Namespace page, and the full documentation of NLOHMANN_JSON_NAMESPACE, NLOHMANN_JSON_NAMESPACE_BEGIN / NLOHMANN_JSON_NAMESPACE_END, and NLOHMANN_JSON_NAMESPACE_NO_VERSION.

    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.

    A strict variant NLOHMANN_JSON_SERIALIZE_ENUM_STRICT throws an exception on undefined input instead of falling back to the first mapping.

    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 127a21114..40fbff7c7 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/modifying_values/index.html b/features/modifying_values/index.html index ef7133660..504b8d43f 100644 --- a/features/modifying_values/index.html +++ b/features/modifying_values/index.html @@ -54,4 +54,4 @@ json a = {1, 2, 3, 4}; a.erase(1); // [1,3,4] (erase by index) -

    See also

    \ No newline at end of file +

    See also

    \ No newline at end of file diff --git a/features/modules/index.html b/features/modules/index.html index 5d10def84..3318f1057 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.

    Exported symbols

    Only the following symbols are exported from nlohmann.json:

    Additionally, the following nlohmann::detail symbols are exported, solely to work around an MSVC compilation issue (#3970). They are implementation details, not part of the public API, and should not be used directly:

    Known issues

    C++20 modules support is exercised in CI against current GCC and Clang on Ubuntu, and the default MSVC toolset on Windows Server 2022 — there is no documented minimum compiler version, unlike feature-test-macro-gated features such as JSON_HAS_RANGES.

    Known compiler issues

    If you hit a different module-related build failure, search existing issues before filing a new one.

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

    Exported symbols

    Only the following symbols are exported from nlohmann.json:

    Additionally, the following nlohmann::detail symbols are exported, solely to work around an MSVC compilation issue (#3970). They are implementation details, not part of the public API, and should not be used directly:

    Known issues

    C++20 modules support is exercised in CI against current GCC and Clang on Ubuntu, and the default MSVC toolset on Windows Server 2022 — there is no documented minimum compiler version, unlike feature-test-macro-gated features such as JSON_HAS_RANGES.

    Known compiler issues

    If you hit a different module-related build failure, search existing issues before filing a new one.

    \ No newline at end of file diff --git a/features/namespace/index.html b/features/namespace/index.html index add70f0c3..b09ef0982 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 inline 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 8f6cd89b9..4a4390e1a 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 1858cbe3a..e577c4968 100644 --- a/features/parsing/index.html +++ b/features/parsing/index.html @@ -4,4 +4,4 @@ // parse from a file std::ifstream f("example.json"); json data = json::parse(f); -

    The input must be encoded in UTF-8; other encodings are not supported. A single input may contain only one JSON value. Inputs consisting of multiple values separated by newlines are handled by the JSON Lines format.

    By default, the library rejects comments and trailing commas. Both can be enabled with parameters of the parse function — see comments and trailing commas.

    Strictness and trailing data

    parse reads a single JSON value and requires the whole input to be consumed: any non-whitespace data after the value is reported as a parse error. Use it when you want to guarantee that an input is exactly one complete JSON document.

    operator>> follows relaxed std::istream semantics instead: it parses one JSON value and leaves the stream positioned right after it, without requiring the rest of the stream to be consumed. This is what makes it possible to read several concatenated values from the same stream, but it also means that "a valid document followed by trailing bytes" is accepted rather than rejected. If you are validating conformance, or need to reject any input that is not exactly one JSON document, prefer parse.

    When using operator>> to read several concatenated values this way, a value that is a number must be followed by whitespace, because operator>> consumes the character that terminates a number — see the operator>> notes for details and examples.

    SAX vs. DOM parsing

    The library offers two parsing models:

    You can influence a DOM parse without switching to the SAX interface by passing a parser callback, which is called during parsing and can, for example, discard parts of the input.

    Exceptions

    When the input is not valid JSON, the parse function throws an exception by default. If exceptions are undesired or unavailable, the parser can instead return a discarded value, or accept can be used to only check whether an input is valid JSON. See parsing and exceptions for the available options.

    See also

    \ No newline at end of file +

    The input must be encoded in UTF-8; other encodings are not supported. A single input may contain only one JSON value. Inputs consisting of multiple values separated by newlines are handled by the JSON Lines format.

    By default, the library rejects comments and trailing commas. Both can be enabled with parameters of the parse function — see comments and trailing commas.

    Strictness and trailing data

    parse reads a single JSON value and requires the whole input to be consumed: any non-whitespace data after the value is reported as a parse error. Use it when you want to guarantee that an input is exactly one complete JSON document.

    operator>> follows relaxed std::istream semantics instead: it parses one JSON value and leaves the stream positioned right after it, without requiring the rest of the stream to be consumed. This is what makes it possible to read several concatenated values from the same stream, but it also means that "a valid document followed by trailing bytes" is accepted rather than rejected. If you are validating conformance, or need to reject any input that is not exactly one JSON document, prefer parse.

    When using operator>> to read several concatenated values this way, a value that is a number must be followed by whitespace, because operator>> consumes the character that terminates a number — see the operator>> notes for details and examples.

    SAX vs. DOM parsing

    The library offers two parsing models:

    You can influence a DOM parse without switching to the SAX interface by passing a parser callback, which is called during parsing and can, for example, discard parts of the input.

    Exceptions

    When the input is not valid JSON, the parse function throws an exception by default. If exceptions are undesired or unavailable, the parser can instead return a discarded value, or accept can be used to only check whether an input is valid JSON. See parsing and exceptions for the available options.

    See also

    \ No newline at end of file diff --git a/features/parsing/json_lines/index.html b/features/parsing/json_lines/index.html index dc86dd0e4..3a4335d78 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.

    This is different from parsing a stream of concatenated (non-newline-delimited) JSON values, for which operator>> does work, provided that a value that is a number is followed by whitespace -- see its notes for details.

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

    This is different from parsing a stream of concatenated (non-newline-delimited) JSON values, for which operator>> does work, provided that a value that is a number is followed by whitespace -- see its notes for details.

    \ No newline at end of file diff --git a/features/parsing/parse_exceptions/index.html b/features/parsing/parse_exceptions/index.html index b746b31a8..c281a334d 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 99172e9fb..0875d4bc0 100644 --- a/features/parsing/parser_callbacks/index.html +++ b/features/parsing/parser_callbacks/index.html @@ -174,4 +174,4 @@ }; json::parse(input, callback); -
    \ 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 8b6473a40..bbfd9788c 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/serialization/index.html b/features/serialization/index.html index 8beef83ba..60927bb4b 100644 --- a/features/serialization/index.html +++ b/features/serialization/index.html @@ -138,4 +138,4 @@

    Avoiding invalid UTF-8

    The best fix is to ensure that all strings are UTF-8 encoded before storing them. See the FAQ on non-ASCII characters for how to convert wide or Latin-1 strings.

    Numbers, NaN, and binary values

    Using std::format, std::print, and fmt

    Since version 3.12.0, JSON values can be formatted directly with C++20's std::format whenever the standard library provides the <format> header (controlled by JSON_HAS_STD_FORMAT). This is enabled by the std::formatter<basic_json> specialization, which also makes JSON values work with std::format_to and with C++23's std::print/std::println:

    std::print("{}", j);      // compact, like j.dump()
     std::print("{:2}", j);    // pretty-printed with indent 2 (like j.dump(2))
     std::println("{:#}", j);  // pretty-printed with the default indent
    -

    The format spec mirrors the dump parameters: "{:#}" pretty-prints, a width such as "{:2}" sets the indent, and a fill-and-align prefix such as "{:.>#}" sets the indent character.

    For the {fmt} library, the library ships a format_as helper. Note its behavior depends on the fmt version; see the FAQ entry for the details and a recipe for a full fmt::formatter specialization.

    Serializing to other formats

    Besides JSON text, a value can also be serialized to the more compact binary formats (BJData, BSON, CBOR, MessagePack, UBJSON).

    See also

    \ No newline at end of file +

    The format spec mirrors the dump parameters: "{:#}" pretty-prints, a width such as "{:2}" sets the indent, and a fill-and-align prefix such as "{:.>#}" sets the indent character.

    For the {fmt} library, the library ships a format_as helper. Note its behavior depends on the fmt version; see the FAQ entry for the details and a recipe for a full fmt::formatter specialization.

    Serializing to other formats

    Besides JSON text, a value can also be serialized to the more compact binary formats (BJData, BSON, CBOR, MessagePack, UBJSON).

    See also

    \ No newline at end of file diff --git a/features/trailing_commas/index.html b/features/trailing_commas/index.html index 8a2e3f9aa..7a507c9a6 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 b092c7eef..2b92f0af3 100644 --- a/features/types/index.html +++ b/features/types/index.html @@ -80,4 +80,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 849ce70bf..c1cee72f7 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

    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 31155bf1a..6239ce72e 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 a56a25d47..084eb1d21 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.
    • NASA Unsteady Pressure-Sensitive Paint Processing, NASA software for processing high-speed video recordings of wind tunnel tests on launch vehicle and aircraft models
    • Terma TEMU, an emulator of spacecraft on-board computers used to develop and validate flight software for European space missions

    Automotive

    Gaming and Entertainment

    • Anno 117: Pax Romana, a city-building strategy game set in the Roman Empire
    • 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
    • Battlefield 6, a military first-person shooter known for its large-scale multiplayer battles
    • Battlefield: REDSEC, a free-to-play battle royale experience set in the Battlefield universe
    • BioMenace: Remastered, a remaster of the classic side-scrolling platform shooter
    • 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
    • College Football 26, a college football simulation game featuring licensed teams and stadiums
    • College Football 27, the latest installment of the college football simulation series
    • 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
    • Dune: Awakening, an open-world survival MMO set on the desert planet Arrakis
    • EA Sports FC 25, an association football simulation with club, career, and online modes
    • EA Sports FC 26, the latest installment of the association football simulation series
    • EA Sports UFC 6, a mixed martial arts fighting simulation
    • FiveM, a modification framework for Grand Theft Auto V that powers custom multiplayer servers
    • FLUX:: Immersive, a suite of professional audio processing and immersive mixing plugins used in music and post-production
    • IMG.LY, a platform offering creative tools and SDKs for integrating advanced image and video editing in applications
    • immersivetech, a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications
    • Kodi, a home theater and media center application
    • LOOT, a tool for optimizing the load order of game plugins, commonly used in The Elder Scrolls and Fallout series
    • LunaTranslator, a real-time translation tool for visual novels
    • MaaAssistantArknights, an automation assistant for the mobile game Arknights
    • Madden NFL 25, a sports simulation game capturing the excitement of American football with realistic gameplay and team management features
    • Madden NFL 26, an American football simulation with franchise and team management modes
    • Madden NFL 27, the latest installment of the American football simulation series
    • Marne, an unofficial private server platform for hosting custom Battlefield 1 game experiences
    • Minecraft, a popular sandbox video game
    • Mumble, a low-latency, open-source voice chat application widely used by gaming communities
    • NHL 22, a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience
    • OBS Studio, a free and open-source suite for video recording and live streaming
    • OpenRCT2, an open source re-implementation of RollerCoaster Tycoon 2
    • 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
    • RetroArch, a frontend for emulators, game engines, and media players built on the libretro API
    • shadPS4, a PlayStation 4 emulator for Windows, Linux and macOS
    • skate., a free-to-play skateboarding game set in an open world
    • Snapchat, a multimedia messaging and augmented reality app for communication and entertainment
    • Steel Century Groove, an action game released in 2026
    • Sunshine, a self-hosted game streaming host compatible with Moonlight clients
    • 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
    • xemu, an emulator of the original Xbox console
    • Zool: Redimensioned, a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments

    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
    • DJI Edge SDK, the reference applications for DJI's Edge SDK, used to build edge computing services on DJI drone docks
    • Elgato Stream Deck, a family of programmable control surfaces for content creators and their plugin ecosystem
    • Instagrid, a manufacturer of portable, high-performance battery systems for professional mobile power supply
    • iRobot, a manufacturer of autonomous home robots including the Roomba vacuum cleaner range
    • Logitech Logi Bolt, the management application for Logitech's secure wireless connectivity technology
    • Novitus, a manufacturer of fiscal cash registers and point-of-sale devices
    • 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
    • Sharp Professional Displays, a range of large-format interactive displays for business and education
    • Siemens SINEMA Remote Connect, a remote connectivity solution for monitoring and managing industrial networks and devices securely
    • Skydio, a manufacturer of autonomous drones for inspection, public safety, and defense applications
    • Sony PlayStation 4, a gaming console developed by Sony that offers a wide range of games and multimedia entertainment features
    • Sony Spatial Reality Display, a glasses-free stereoscopic 3D display and its plugins for Blender, 3ds Max, and ZBrush
    • 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
    • Yamaha Clavinova, a series of digital pianos combining acoustic piano feel with digital sound technology

    Operating Systems and Platforms

    • Apple iOS and macOS, a family of operating systems developed by Apple, including iOS for mobile devices and macOS for desktop computers
    • Chromium, the open-source browser project that Google Chrome, Microsoft Edge, and many other browsers are built on, where the library is used as data container for on-device model execution
    • Google Fuchsia, an open-source operating system developed by Google, designed to be secure, updatable, and adaptable across various devices
    • LG webOS, a Linux-based operating system used in LG smart TVs, signage, and embedded devices
    • Microsoft Azure Linux, a Linux distribution developed by Microsoft for Azure infrastructure and edge workloads
    • OpenHarmony, an open-source operating system for smart devices and the foundation of HarmonyOS
    • SerenityOS, an open-source operating system that aims to provide a simple and beautiful user experience with a focus on simplicity and elegance
    • Windows Subsystem for Linux, a compatibility layer that runs Linux environments natively on Windows
    • 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
    • Airbus Ghidralligator, a Ghidra-based emulator from Airbus CyberSecurity used to fuzz and analyse embedded firmware
    • Apache brpc, an industrial-grade remote procedure call framework for C++
    • 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"
    • Codon, an ahead-of-time compiler for a Python-like language
    • 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>.
    • Flutter, a UI toolkit for building natively compiled applications for mobile, web, and desktop from a single codebase
    • Fraunhofer VVenC, a fast and efficient encoder for the Versatile Video Coding (H.266/VVC) standard
    • GitHub CodeQL, a code analysis tool used for identifying security vulnerabilities and bugs in software through semantic queries
    • GoPro ngfx, a low-level graphics abstraction and profiling framework developed by GoPro
    • gRPC, a high-performance universal remote procedure call framework
    • 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 GITS, a tool for capturing and replaying graphics API calls for debugging and performance analysis
    • 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
    • Java SE, the core Java platform that provides the libraries and runtime needed to build and run general-purpose Java applications
    • Meta Yoga, a layout engine that facilitates flexible and efficient user interface design across multiple platforms
    • MKVToolNix, a set of tools for creating, editing, and inspecting MKV (Matroska) multimedia container files
    • MRTech IFF SDK, an image processing SDK for machine vision applications with GPU-accelerated pipelines
    • Nix, a purely functional package manager
    • Notepad++, a free source code editor that supports various programming languages
    • NVIDIA Nsight Compute, a performance analysis tool for CUDA applications that provides detailed insights into GPU performance metrics
    • openFrameworks, a community-developed C++ toolkit for creative coding
    • 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
    • Oracle GraalVM, a high-performance JDK distribution with ahead-of-time compilation and polyglot runtime support
    • Philips amp-cucumber-cpp-runner, a behaviour-driven development test runner for embedded C++ software developed at Philips
    • Qt Creator, an IDE for developing applications using the Qt application framework
    • Qt for MCUs, a graphics framework for building fluid user interfaces on microcontrollers
    • React Native, a framework for building native mobile applications using React
    • Scanbot SDK, a software development kit (SDK) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications
    • STMicroelectronics TouchGFX, a graphical user interface framework shipped with STM32 microcontrollers for building embedded HMIs
    • swagger-codegen, a template-driven engine that generates API clients and server stubs from an OpenAPI specification
    • Swoole, a coroutine-based concurrency engine for PHP
    • Tracy Profiler, a real-time frame profiler for games and other applications
    • WasmEdge, a lightweight WebAssembly runtime for edge and cloud workloads
    • x64dbg, an open source user mode debugger for Windows, aimed at reverse engineering and malware analysis

    Machine Learning and AI

    • Alibaba MNN, a lightweight deep learning inference engine for mobile and embedded devices
    • AMD Gaia, an open-source framework for running generative AI applications locally on AMD hardware
    • AMD Vitis AI (VAIP), the execution provider stack that runs AI models on AMD Ryzen AI and adaptive computing devices
    • 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
    • FunASR, a speech recognition toolkit for training and deploying end-to-end models
    • Google gemma.cpp, a lightweight C++ inference engine designed for running AI models from the Gemma family
    • Google Magenta The Infinite Crate, an open-source generative AI plugin for digital audio workstations from Google's Magenta research team
    • GPT4All, a desktop application for running local large language models on consumer hardware
    • Huawei MindSpore, a deep learning framework for training and inference across device, edge, and cloud
    • KTransformers, a framework for heterogeneous large language model inference
    • llama.cpp, a C++ library designed for efficient inference of large language models (LLMs), enabling streamlined integration into applications
    • LocalAI, a self-hosted inference engine that exposes local models through an OpenAI-compatible API
    • 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
    • NVIDIA Instant NGP, an implementation of instant neural graphics primitives for rapid scene reconstruction
    • NVIDIA TensorRT, an SDK for high-performance deep learning inference, including its TensorRT-LLM extension for large language models
    • NVIDIA TensorRT-LLM, a toolkit for optimizing and serving large language model inference on GPUs
    • ONNX Runtime, a cross-platform inference and training accelerator for machine learning models
    • OpenVINO, Intel's toolkit for optimizing and deploying deep learning inference across CPUs, GPUs, and NPUs
    • PaddleOCR, an optical character recognition toolkit that turns documents and images into structured data
    • PaddlePaddle, a deep learning framework for distributed training and inference
    • Peer, a platform offering personalized AI assistants for interactive learning and creative collaboration
    • PyTorch, a machine learning framework for building and training neural networks, widely used in research and production
    • Qualcomm AI Engine Direct, a toolchain for building and running generative AI applications on Snapdragon devices
    • sherpa-onnx, a speech toolkit for on-device recognition, synthesis and speaker diarization
    • 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
    • whisper.cpp, a C++ implementation of OpenAI's Whisper automatic speech recognition model

    Scientific Research and Analysis

    • BLACK, a bounded linear temporal logic (LTL) satisfiability checker
    • CERN ALICE O2, the online-offline computing framework of the ALICE heavy-ion experiment at the Large Hadron Collider
    • CERN Atlas Athena, a software framework used in the ATLAS experiment at the Large Hadron Collider (LHC) for performance monitoring
    • CERN CMSSW, the offline software framework of the CMS experiment at the Large Hadron Collider
    • CERN Gaudi, the event-processing framework used by the LHCb and ATLAS experiments at the Large Hadron Collider
    • 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
    • LLNL ROSE, a compiler infrastructure from Lawrence Livermore National Laboratory for building source-to-source program analysis and transformation tools
    • Maple, a symbolic and numeric computing environment for advanced mathematical modeling and analysis
    • MeVisLab, a software framework for medical image processing and visualization.
    • MITK, the Medical Imaging Interaction Toolkit, a framework for developing interactive medical image processing software
    • 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
    • ORNL DataFed, a federated scientific data management system developed at Oak Ridge National Laboratory
    • 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
    • Sandia InterSpec, spectral radiation analysis software from Sandia National Laboratories for identifying radioactive isotopes
    • VolView, a lightweight application for interactive visualization and analysis of 3D medical imaging data.
    • VTK, a software library for 3D computer graphics, image processing, and visualization

    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
    • EasyEffects, an audio effects processor for PipeWire offering limiting, compression and equalization
    • espanso, a cross-platform text expander
    • Karabiner-Elements, a keyboard customizer for macOS
    • MacType, a font rendering engine for Windows
    • magicplan, a mobile application for creating floor plans and interior designs using augmented reality
    • 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
    • MuseScore, a free and open-source music notation and composition application
    • NanaZip, a 7-Zip derivative built for modern Windows
    • 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
    • VNote, a Markdown-based note-taking application written in C++

    Databases and Big Data

    • ADIOS2, a data management framework designed for high-performance input and output operations
    • Apache Doris, a real-time analytical database for high-concurrency queries
    • Claris FileMaker Server, the server platform hosting FileMaker custom apps and databases, developed by Apple subsidiary Claris
    • ClickHouse, a column-oriented database management system for real-time analytical queries
    • 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
    • Manticore Search, a database for search, offering full-text and vector queries
    • Milvus, a cloud-native vector database built for embedding similarity search
    • MongoDB, a general-purpose document database
    • 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
    • Typesense, an open source typo-tolerant search engine
    • Vearch, a distributed vector database developed at JD.com for similarity search and retrieval-augmented generation
    • WiredTiger, a high-performance storage engine for databases, offering support for compression, concurrency, and checkpointing

    Simulation and Modeling

    • Adobe Lagrange, a geometry processing library developed by Adobe for mesh manipulation and analysis
    • 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
    • Bambu Studio, a slicing and print management application for Bambu Lab 3D printers
    • 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
    • FreeCAD, a free and open-source parametric 3D CAD modeler for product design and engineering
    • GAMS, a high-performance mathematical modeling system for optimization and decision support
    • Keysight WirelessPro, a simulation platform for 5G, 5G-Advanced, and 6G cellular network research
    • 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
    • Microsoft AirSim, a simulator for autonomous vehicles and drones built on Unreal Engine
    • NVIDIA Omniverse, a platform for 3D content creation and collaboration that enables real-time simulations and interactive experiences across various industries
    • OpenSCAD, a script-driven solid 3D CAD modeller
    • OrcaSlicer, an open-source slicer supporting a wide range of consumer 3D printers
    • Pixar Renderman, a photorealistic 3D rendering software developed by Pixar, widely used in the film industry for creating high-quality visual effects and animations
    • PrusaSlicer, the slicing software developed by Prusa Research for its 3D printers
    • 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
    • Cisco MLS++, an implementation of the Messaging Layer Security protocol for end-to-end encrypted group messaging
    • 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
    • Deutsche Telekom sysrepo-plugins, a collection of YANG datastore plugins used to manage network devices
    • 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
    • Envoy, a cloud-native edge and service proxy that forms the data plane of many service meshes
    • Ethereum Solidity, a high-level, object-oriented programming language designed for implementing smart contracts on the Ethereum platform
    • gVisor, an application kernel that provides a secure sandbox for running untrusted containers
    • IBM Storage Virtualize, the software powering IBM FlashSystem enterprise storage arrays
    • 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
    • Meta FBOSS, the software stack that controls the network switches in Meta's data centers
    • 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 Confidential Consortium Framework, a framework for building secure, highly available applications on trusted execution environments
    • Microsoft WinGet, a command-line utility included in the Windows Package Manager
    • Mitsubishi Electric SECS/GEM, the semiconductor equipment communication software running on Mitsubishi Electric C Controller and C intelligent function modules
    • Moxa, a provider of industrial networking, computing, and automation infrastructure
    • 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
    • Siemens SINEC, a family of network management and infrastructure services for industrial networks
    • Toshiba Industrial Servers, the FS20000R series of industrial servers for factory automation and control systems
    • Wazuh, a security platform for threat detection, integrity monitoring and incident response
    • ZeroTier, a software-defined networking service that creates virtual Ethernet networks
    \ 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.
    • NASA Unsteady Pressure-Sensitive Paint Processing, NASA software for processing high-speed video recordings of wind tunnel tests on launch vehicle and aircraft models
    • Terma TEMU, an emulator of spacecraft on-board computers used to develop and validate flight software for European space missions

    Automotive

    Gaming and Entertainment

    • Anno 117: Pax Romana, a city-building strategy game set in the Roman Empire
    • 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
    • Battlefield 6, a military first-person shooter known for its large-scale multiplayer battles
    • Battlefield: REDSEC, a free-to-play battle royale experience set in the Battlefield universe
    • BioMenace: Remastered, a remaster of the classic side-scrolling platform shooter
    • 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
    • College Football 26, a college football simulation game featuring licensed teams and stadiums
    • College Football 27, the latest installment of the college football simulation series
    • 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
    • Dune: Awakening, an open-world survival MMO set on the desert planet Arrakis
    • EA Sports FC 25, an association football simulation with club, career, and online modes
    • EA Sports FC 26, the latest installment of the association football simulation series
    • EA Sports UFC 6, a mixed martial arts fighting simulation
    • FiveM, a modification framework for Grand Theft Auto V that powers custom multiplayer servers
    • FLUX:: Immersive, a suite of professional audio processing and immersive mixing plugins used in music and post-production
    • IMG.LY, a platform offering creative tools and SDKs for integrating advanced image and video editing in applications
    • immersivetech, a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications
    • Kodi, a home theater and media center application
    • LOOT, a tool for optimizing the load order of game plugins, commonly used in The Elder Scrolls and Fallout series
    • LunaTranslator, a real-time translation tool for visual novels
    • MaaAssistantArknights, an automation assistant for the mobile game Arknights
    • Madden NFL 25, a sports simulation game capturing the excitement of American football with realistic gameplay and team management features
    • Madden NFL 26, an American football simulation with franchise and team management modes
    • Madden NFL 27, the latest installment of the American football simulation series
    • Marne, an unofficial private server platform for hosting custom Battlefield 1 game experiences
    • Minecraft, a popular sandbox video game
    • Mumble, a low-latency, open-source voice chat application widely used by gaming communities
    • NHL 22, a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience
    • OBS Studio, a free and open-source suite for video recording and live streaming
    • OpenRCT2, an open source re-implementation of RollerCoaster Tycoon 2
    • 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
    • RetroArch, a frontend for emulators, game engines, and media players built on the libretro API
    • shadPS4, a PlayStation 4 emulator for Windows, Linux and macOS
    • skate., a free-to-play skateboarding game set in an open world
    • Snapchat, a multimedia messaging and augmented reality app for communication and entertainment
    • Steel Century Groove, an action game released in 2026
    • Sunshine, a self-hosted game streaming host compatible with Moonlight clients
    • 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
    • xemu, an emulator of the original Xbox console
    • Zool: Redimensioned, a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments

    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
    • DJI Edge SDK, the reference applications for DJI's Edge SDK, used to build edge computing services on DJI drone docks
    • Elgato Stream Deck, a family of programmable control surfaces for content creators and their plugin ecosystem
    • Instagrid, a manufacturer of portable, high-performance battery systems for professional mobile power supply
    • iRobot, a manufacturer of autonomous home robots including the Roomba vacuum cleaner range
    • Logitech Logi Bolt, the management application for Logitech's secure wireless connectivity technology
    • Novitus, a manufacturer of fiscal cash registers and point-of-sale devices
    • 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
    • Sharp Professional Displays, a range of large-format interactive displays for business and education
    • Siemens SINEMA Remote Connect, a remote connectivity solution for monitoring and managing industrial networks and devices securely
    • Skydio, a manufacturer of autonomous drones for inspection, public safety, and defense applications
    • Sony PlayStation 4, a gaming console developed by Sony that offers a wide range of games and multimedia entertainment features
    • Sony Spatial Reality Display, a glasses-free stereoscopic 3D display and its plugins for Blender, 3ds Max, and ZBrush
    • 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
    • Yamaha Clavinova, a series of digital pianos combining acoustic piano feel with digital sound technology

    Operating Systems and Platforms

    • Apple iOS and macOS, a family of operating systems developed by Apple, including iOS for mobile devices and macOS for desktop computers
    • Chromium, the open-source browser project that Google Chrome, Microsoft Edge, and many other browsers are built on, where the library is used as data container for on-device model execution
    • Google Fuchsia, an open-source operating system developed by Google, designed to be secure, updatable, and adaptable across various devices
    • LG webOS, a Linux-based operating system used in LG smart TVs, signage, and embedded devices
    • Microsoft Azure Linux, a Linux distribution developed by Microsoft for Azure infrastructure and edge workloads
    • OpenHarmony, an open-source operating system for smart devices and the foundation of HarmonyOS
    • SerenityOS, an open-source operating system that aims to provide a simple and beautiful user experience with a focus on simplicity and elegance
    • Windows Subsystem for Linux, a compatibility layer that runs Linux environments natively on Windows
    • 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
    • Airbus Ghidralligator, a Ghidra-based emulator from Airbus CyberSecurity used to fuzz and analyse embedded firmware
    • Apache brpc, an industrial-grade remote procedure call framework for C++
    • 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"
    • Codon, an ahead-of-time compiler for a Python-like language
    • 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>.
    • Flutter, a UI toolkit for building natively compiled applications for mobile, web, and desktop from a single codebase
    • Fraunhofer VVenC, a fast and efficient encoder for the Versatile Video Coding (H.266/VVC) standard
    • GitHub CodeQL, a code analysis tool used for identifying security vulnerabilities and bugs in software through semantic queries
    • GoPro ngfx, a low-level graphics abstraction and profiling framework developed by GoPro
    • gRPC, a high-performance universal remote procedure call framework
    • 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 GITS, a tool for capturing and replaying graphics API calls for debugging and performance analysis
    • 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
    • Java SE, the core Java platform that provides the libraries and runtime needed to build and run general-purpose Java applications
    • Meta Yoga, a layout engine that facilitates flexible and efficient user interface design across multiple platforms
    • MKVToolNix, a set of tools for creating, editing, and inspecting MKV (Matroska) multimedia container files
    • MRTech IFF SDK, an image processing SDK for machine vision applications with GPU-accelerated pipelines
    • Nix, a purely functional package manager
    • Notepad++, a free source code editor that supports various programming languages
    • NVIDIA Nsight Compute, a performance analysis tool for CUDA applications that provides detailed insights into GPU performance metrics
    • openFrameworks, a community-developed C++ toolkit for creative coding
    • 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
    • Oracle GraalVM, a high-performance JDK distribution with ahead-of-time compilation and polyglot runtime support
    • Philips amp-cucumber-cpp-runner, a behaviour-driven development test runner for embedded C++ software developed at Philips
    • Qt Creator, an IDE for developing applications using the Qt application framework
    • Qt for MCUs, a graphics framework for building fluid user interfaces on microcontrollers
    • React Native, a framework for building native mobile applications using React
    • Scanbot SDK, a software development kit (SDK) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications
    • STMicroelectronics TouchGFX, a graphical user interface framework shipped with STM32 microcontrollers for building embedded HMIs
    • swagger-codegen, a template-driven engine that generates API clients and server stubs from an OpenAPI specification
    • Swoole, a coroutine-based concurrency engine for PHP
    • Tracy Profiler, a real-time frame profiler for games and other applications
    • WasmEdge, a lightweight WebAssembly runtime for edge and cloud workloads
    • x64dbg, an open source user mode debugger for Windows, aimed at reverse engineering and malware analysis

    Machine Learning and AI

    • Alibaba MNN, a lightweight deep learning inference engine for mobile and embedded devices
    • AMD Gaia, an open-source framework for running generative AI applications locally on AMD hardware
    • AMD Vitis AI (VAIP), the execution provider stack that runs AI models on AMD Ryzen AI and adaptive computing devices
    • 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
    • FunASR, a speech recognition toolkit for training and deploying end-to-end models
    • Google gemma.cpp, a lightweight C++ inference engine designed for running AI models from the Gemma family
    • Google Magenta The Infinite Crate, an open-source generative AI plugin for digital audio workstations from Google's Magenta research team
    • GPT4All, a desktop application for running local large language models on consumer hardware
    • Huawei MindSpore, a deep learning framework for training and inference across device, edge, and cloud
    • KTransformers, a framework for heterogeneous large language model inference
    • llama.cpp, a C++ library designed for efficient inference of large language models (LLMs), enabling streamlined integration into applications
    • LocalAI, a self-hosted inference engine that exposes local models through an OpenAI-compatible API
    • 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
    • NVIDIA Instant NGP, an implementation of instant neural graphics primitives for rapid scene reconstruction
    • NVIDIA TensorRT, an SDK for high-performance deep learning inference, including its TensorRT-LLM extension for large language models
    • NVIDIA TensorRT-LLM, a toolkit for optimizing and serving large language model inference on GPUs
    • ONNX Runtime, a cross-platform inference and training accelerator for machine learning models
    • OpenVINO, Intel's toolkit for optimizing and deploying deep learning inference across CPUs, GPUs, and NPUs
    • PaddleOCR, an optical character recognition toolkit that turns documents and images into structured data
    • PaddlePaddle, a deep learning framework for distributed training and inference
    • Peer, a platform offering personalized AI assistants for interactive learning and creative collaboration
    • PyTorch, a machine learning framework for building and training neural networks, widely used in research and production
    • Qualcomm AI Engine Direct, a toolchain for building and running generative AI applications on Snapdragon devices
    • sherpa-onnx, a speech toolkit for on-device recognition, synthesis and speaker diarization
    • 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
    • whisper.cpp, a C++ implementation of OpenAI's Whisper automatic speech recognition model

    Scientific Research and Analysis

    • BLACK, a bounded linear temporal logic (LTL) satisfiability checker
    • CERN ALICE O2, the online-offline computing framework of the ALICE heavy-ion experiment at the Large Hadron Collider
    • CERN Atlas Athena, a software framework used in the ATLAS experiment at the Large Hadron Collider (LHC) for performance monitoring
    • CERN CMSSW, the offline software framework of the CMS experiment at the Large Hadron Collider
    • CERN Gaudi, the event-processing framework used by the LHCb and ATLAS experiments at the Large Hadron Collider
    • 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
    • LLNL ROSE, a compiler infrastructure from Lawrence Livermore National Laboratory for building source-to-source program analysis and transformation tools
    • Maple, a symbolic and numeric computing environment for advanced mathematical modeling and analysis
    • MeVisLab, a software framework for medical image processing and visualization.
    • MITK, the Medical Imaging Interaction Toolkit, a framework for developing interactive medical image processing software
    • 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
    • ORNL DataFed, a federated scientific data management system developed at Oak Ridge National Laboratory
    • 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
    • Sandia InterSpec, spectral radiation analysis software from Sandia National Laboratories for identifying radioactive isotopes
    • VolView, a lightweight application for interactive visualization and analysis of 3D medical imaging data.
    • VTK, a software library for 3D computer graphics, image processing, and visualization

    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
    • EasyEffects, an audio effects processor for PipeWire offering limiting, compression and equalization
    • espanso, a cross-platform text expander
    • Karabiner-Elements, a keyboard customizer for macOS
    • MacType, a font rendering engine for Windows
    • magicplan, a mobile application for creating floor plans and interior designs using augmented reality
    • 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
    • MuseScore, a free and open-source music notation and composition application
    • NanaZip, a 7-Zip derivative built for modern Windows
    • 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
    • VNote, a Markdown-based note-taking application written in C++

    Databases and Big Data

    • ADIOS2, a data management framework designed for high-performance input and output operations
    • Apache Doris, a real-time analytical database for high-concurrency queries
    • Claris FileMaker Server, the server platform hosting FileMaker custom apps and databases, developed by Apple subsidiary Claris
    • ClickHouse, a column-oriented database management system for real-time analytical queries
    • 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
    • Manticore Search, a database for search, offering full-text and vector queries
    • Milvus, a cloud-native vector database built for embedding similarity search
    • MongoDB, a general-purpose document database
    • 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
    • Typesense, an open source typo-tolerant search engine
    • Vearch, a distributed vector database developed at JD.com for similarity search and retrieval-augmented generation
    • WiredTiger, a high-performance storage engine for databases, offering support for compression, concurrency, and checkpointing

    Simulation and Modeling

    • Adobe Lagrange, a geometry processing library developed by Adobe for mesh manipulation and analysis
    • 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
    • Bambu Studio, a slicing and print management application for Bambu Lab 3D printers
    • 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
    • FreeCAD, a free and open-source parametric 3D CAD modeler for product design and engineering
    • GAMS, a high-performance mathematical modeling system for optimization and decision support
    • Keysight WirelessPro, a simulation platform for 5G, 5G-Advanced, and 6G cellular network research
    • 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
    • Microsoft AirSim, a simulator for autonomous vehicles and drones built on Unreal Engine
    • NVIDIA Omniverse, a platform for 3D content creation and collaboration that enables real-time simulations and interactive experiences across various industries
    • OpenSCAD, a script-driven solid 3D CAD modeller
    • OrcaSlicer, an open-source slicer supporting a wide range of consumer 3D printers
    • Pixar Renderman, a photorealistic 3D rendering software developed by Pixar, widely used in the film industry for creating high-quality visual effects and animations
    • PrusaSlicer, the slicing software developed by Prusa Research for its 3D printers
    • 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
    • Cisco MLS++, an implementation of the Messaging Layer Security protocol for end-to-end encrypted group messaging
    • 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
    • Deutsche Telekom sysrepo-plugins, a collection of YANG datastore plugins used to manage network devices
    • 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
    • Envoy, a cloud-native edge and service proxy that forms the data plane of many service meshes
    • Ethereum Solidity, a high-level, object-oriented programming language designed for implementing smart contracts on the Ethereum platform
    • gVisor, an application kernel that provides a secure sandbox for running untrusted containers
    • IBM Storage Virtualize, the software powering IBM FlashSystem enterprise storage arrays
    • 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
    • Meta FBOSS, the software stack that controls the network switches in Meta's data centers
    • 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 Confidential Consortium Framework, a framework for building secure, highly available applications on trusted execution environments
    • Microsoft WinGet, a command-line utility included in the Windows Package Manager
    • Mitsubishi Electric SECS/GEM, the semiconductor equipment communication software running on Mitsubishi Electric C Controller and C intelligent function modules
    • Moxa, a provider of industrial networking, computing, and automation infrastructure
    • 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
    • Siemens SINEC, a family of network management and infrastructure services for industrial networks
    • Toshiba Industrial Servers, the FS20000R series of industrial servers for factory automation and control systems
    • Wazuh, a security platform for threat detection, integrity monitoring and incident response
    • ZeroTier, a software-defined networking service that creates virtual Ethernet networks
    \ No newline at end of file diff --git a/home/debugging/index.html b/home/debugging/index.html index 96f8dbe12..da32390a2 100644 --- a/home/debugging/index.html +++ b/home/debugging/index.html @@ -1 +1 @@ - Debugging - JSON for Modern C++
    Skip to content

    Debugging

    This page collects the library's built-in debugger integrations and other debugging-related features. They are not linked from a single place elsewhere in the docs, so are collected here.

    Visual Studio (natvis)

    The repository ships nlohmann_json.natvis at its root, a Natvis file that gives json/ordered_json values a friendly, key/value debugger view instead of showing raw internal fields, when debugging with the MSVC debug engine (cppvsdbg) in Visual Studio or VS Code.

    Debug engines that wrap LLDB instead of the MSVC debug engine (for example, codelldb in VS Code) only have partial/experimental Natvis support, and commonly fall back to showing raw internal fields even with the .natvis file present. Switching to cppvsdbg where available, or checking your debug extension's own Natvis support/version, are the next things to try if this happens. There is currently no bundled LLDB-native pretty-printer script in this repository.

    GDB

    The repository ships a GDB Python pretty printer under tools/gdb_pretty_printer, with its own usage instructions in that directory's README.md.

    Extended exception diagnostics

    Defining JSON_DIAGNOSTICS before including the library augments type_error/out_of_range-style exceptions with a JSON Pointer to the offending value, which can help pinpoint where in a large document a runtime error occurred. This only applies to exceptions thrown after a value exists (e.g. during element access); parse errors, which happen before any value exists to point at, are not covered by this mechanism -- see Parsing and exceptions for how parse errors report their own location instead.

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

    Debugging

    This page collects the library's built-in debugger integrations and other debugging-related features. They are not linked from a single place elsewhere in the docs, so are collected here.

    Visual Studio (natvis)

    The repository ships nlohmann_json.natvis at its root, a Natvis file that gives json/ordered_json values a friendly, key/value debugger view instead of showing raw internal fields, when debugging with the MSVC debug engine (cppvsdbg) in Visual Studio or VS Code.

    Debug engines that wrap LLDB instead of the MSVC debug engine (for example, codelldb in VS Code) only have partial/experimental Natvis support, and commonly fall back to showing raw internal fields even with the .natvis file present. Switching to cppvsdbg where available, or checking your debug extension's own Natvis support/version, are the next things to try if this happens. There is currently no bundled LLDB-native pretty-printer script in this repository.

    GDB

    The repository ships a GDB Python pretty printer under tools/gdb_pretty_printer, with its own usage instructions in that directory's README.md.

    Extended exception diagnostics

    Defining JSON_DIAGNOSTICS before including the library augments type_error/out_of_range-style exceptions with a JSON Pointer to the offending value, which can help pinpoint where in a large document a runtime error occurred. This only applies to exceptions thrown after a value exists (e.g. during element access); parse errors, which happen before any value exists to point at, are not covered by this mechanism -- see Parsing and exceptions for how parse errors report their own location instead.

    \ No newline at end of file diff --git a/home/design_goals/index.html b/home/design_goals/index.html index 63829e607..d9fba355e 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 d148af3df..dae54d8ff 100644 --- a/home/exceptions/index.html +++ b/home/exceptions/index.html @@ -294,4 +294,4 @@ array index 18446744073709551616 exceeds size_type 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

    to_ubjson and to_bjdata were called with use_type = true but use_size = false. UBJSON requires a size marker (#) after a type marker ($).

    Example message

    [json.exception.other_error.502] use_type requires use_size = true
    -

    Note

    This exception was added in version 3.13.0. Before that, debug builds aborted on an assertion and release builds wrote a $ marker without #, which from_ubjson then rejected.

    \ No newline at end of file +

    Note

    This exception was added in version 3.13.0. Before that, debug builds aborted on an assertion and release builds wrote a $ marker without #, which from_ubjson then rejected.

    \ No newline at end of file diff --git a/home/faq/index.html b/home/faq/index.html index f98b8cc6d..e2c26707b 100644 --- a/home/faq/index.html +++ b/home/faq/index.html @@ -34,4 +34,4 @@

    Using JSON values with std::format or fmt

    Question

    std::format works out of the box since version 3.13.0, as long as the standard library provides <format> (see JSON_HAS_STD_FORMAT); see std::formatter<basic_json> for details, including the "{:#}" pretty-print spec, indent widths ("{:2}"), and custom indent characters ("{:.>#}").

    For fmt, the library ships format_as, a small customization point fmt looks for via argument-dependent lookup. It only has an effect on fmt 10.0.0 through 11.0.2 — from fmt 11.1.0 onwards, fmt no longer picks up a format_as overload that returns a std::string. On such versions (or any version, if you also want the same "{:#}"/width/fill-and-align spec support that std::formatter<basic_json> has), define your own fmt::formatter specialization; see format_as for a recipe that mirrors it.

    If you get ambiguous-overload errors when passing a JSON value to fmt::format/fmt::print without any fmt::formatter<json> specialization in scope, that's fmt picking up basic_json's implicit operator ValueType() conversion operator (see #964 and #958); disabling it via JSON_USE_IMPLICIT_CONVERSIONS 0 avoids the ambiguity.

    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 547e1dbbb..9aff0852a 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-2026 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-2026 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 db85df4b3..ef636b3d3 100644 --- a/home/releases/index.html +++ b/home/releases/index.html @@ -1 +1 @@ - Releases - JSON for Modern C++
    Skip to content

    Releases

    This page summarizes the notable changes of every release and links to the relevant documentation. The complete release notes — including all changes, the download files, and their checksums — are published on the GitHub releases page.

    v3.12.0 (2025-04-11)

    Fixes bugs found in 3.11.3 and adds several features. All changes are backward-compatible.

    Full release notes.

    v3.11.3 (2023-11-28)

    Adds features and fixes bugs found in 3.11.2. All changes are backward-compatible.

    • Adds a custom base class as a node customization point.
    • Adds serialization-only conversion macros (NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE and NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE) and a clearer parse error for empty input.
    • Adds Bazel and Swift Package Manager build support.
    • Fixes custom allocators, a memory leak in adl_serializer's to_json, initializer-list construction when size_type is not int, and many compiler warnings.

    Full release notes.

    v3.11.2 (2022-08-12)

    Fixes bugs found in 3.11.1 and restructures the namespace. All changes are backward-compatible.

    • Fixes the value function (broken for strings, size types, and nullptr in 3.11.0) and makes json_fwd.hpp self-contained.
    • Restores using json_pointer as a key in associative containers and comparing it with strings.
    • Restructures the inline namespace and allows disabling the version component, and avoids heap allocations in the BJData parser.

    Full release notes.

    v3.11.1 (2022-08-01)

    Fixes a regression from 3.11.0. All changes are backward-compatible.

    Full release notes.

    v3.11.0 (2022-08-01)

    One of the largest releases ever. All changes are backward-compatible.

    This release introduced a UDL regression that was fixed in 3.11.1. Full release notes.

    v3.10.5 (2022-01-03)

    Bug-fix release. All changes are backward-compatible.

    • Guards the std::filesystem conversions behind compiler-support checks (JSON_HAS_FILESYSTEM), which can be set to 0 to disable them altogether.

    Full release notes.

    v3.10.4 (2021-10-16)

    Fixes regressions introduced in 3.10.0. All changes are backward-compatible.

    • Fixes the std::filesystem::path conversion (which could trigger a stack overflow and broke compilation on Windows).
    • Fixes compilation for types with an explicit defaulted constructor and for code relying on the return values of std::find and std::remove.

    Full release notes.

    v3.10.3 (2021-10-08)

    Fixes more regressions from 3.10.0. All changes are backward-compatible.

    • Fixes extended-diagnostics assertions triggered by update and by inserting into arrays.
    • Supports custom allocators when writing binary formats into a std::vector, and allows conversion from types that only provide begin()/end().

    Full release notes.

    v3.10.2 (2021-08-26)

    Re-release of 3.10.1, whose Git tag pointed at the wrong commit due to a bug in the release script. All changes are backward-compatible. Full release notes.

    v3.10.1 (2021-08-24)

    Fixes a regression from 3.10.0. All changes are backward-compatible.

    Full release notes.

    v3.10.0 (2021-08-17)

    Feature release. All changes are backward-compatible.

    • Adds extended diagnostic messages (JSON_DIAGNOSTICS) that prepend a JSON pointer to exception messages to pinpoint the offending value.
    • Adds a GDB pretty-printer and a cbor_tag_handler_t store option to keep CBOR tags as binary subtypes.
    • Supports containers with non-default-constructible types and parsing from std::byte.
    • Adds JSON_NO_IO to exclude the I/O headers and the JSON_HAS_CPP_* macros to override the detected C++ standard.

    Full release notes.

    v3.9.1 (2020-08-06)

    Fixes two regressions from 3.9.0. All changes are backward-compatible.

    Full release notes.

    v3.9.0 (2020-07-27)

    Feature release adding four long-requested features. All changes are backward-compatible.

    Full release notes.

    v3.8.0 (2020-06-14)

    Feature release. All changes are backward-compatible.

    • Introduces a binary value type that is read from and written to CBOR, BSON, and MessagePack, and can be shared between formats.
    • Generalizes the input adapters to read from any LegacyInputIterator container (3–10 % faster parsing).
    • Fixes contains for JSON pointers and makes the binary from_cbor/from_msgpack/etc. functions respect allow_exceptions.

    Full release notes.

    v3.7.3 (2019-11-17)

    Fixes a regression from 3.7.2 that could yield quadratic complexity in destructor calls. All changes are backward-compatible. Full release notes.

    v3.7.2 (2019-11-10)

    Fixes a stack overflow for deeply nested input by making the destructor iterative; parsing is now bounded only by available memory. All changes are backward-compatible. Full release notes.

    v3.7.1 (2019-11-06)

    Bug-fix release. All changes are backward-compatible.

    • Fixes a segmentation fault when serializing the std::int64_t minimum value and fixes contains for JSON pointers.
    • Allows items with a custom string type and makes json_pointer::back const.

    Full release notes.

    v3.7.0 (2019-07-28)

    Convenience features and house-keeping. All changes are backward-compatible.

    • Adds a contains overload that checks a JSON pointer without throwing, a generic to_string, and a return value for emplace_back.

    Full release notes.

    v3.6.1 (2019-03-20)

    Fixes a regression (GCC 7/8 compilation) and a <Windows.h> build error introduced in 3.6.0. All changes are backward-compatible. Full release notes.

    v3.6.0 (2019-03-20)

    Feature release. All changes are backward-compatible.

    • Reworks the JSON pointer interface (operator/, push_back, parent_pointer, …).
    • Adds a contains function to test for an object key and greatly improves the performance of integer serialization.

    Full release notes.

    v3.5.0 (2018-12-22)

    Feature release. All changes are backward-compatible.

    • Adds structured-binding support via the items function and reading from FILE* in the parse function.
    • Fixes the eofbit handling on input streams and a bug in the BSON SAX parser.

    Full release notes.

    v3.4.0 (2018-10-30)

    Feature release. All changes are backward-compatible.

    Full release notes.

    v3.3.0 (2018-10-05)

    Feature release. All changes are backward-compatible.

    • Adds GCC 4.8 support, the get_to function, and an overhauled and documented CMake integration.

    Full release notes.

    v3.2.0 (2018-08-20)

    Feature release. All changes are backward-compatible.

    • Adds a SAX interface and a non-recursive parser.
    • Adds parsing from wide-string types (std::wstring, std::u16string, std::u32string) and std::string_view (C++17), and round-tripping of std::map/std::unordered_map with non-string keys.

    Full release notes.

    v3.1.2 (2018-03-14)

    Bug-fix release. All changes are backward-compatible.

    • Fixes a memory leak in the parser callback and adds user-defined string-type support to the parser and serializer.

    Full release notes.

    v3.1.1 (2018-02-13)

    Bug-fix release. All changes are backward-compatible.

    • Fixes parsing of indefinite-length CBOR strings, a user-defined conversion to vector types, and overflow detection for UBJSON containers.

    Full release notes.

    v3.1.0 (2018-02-01)

    Feature release. All changes are backward-compatible.

    Full release notes.

    v3.0.1 (2017-12-29)

    Fixes small issues in the JSON Pointer and JSON Patch implementations (invalid "copy" targets and non-integer array indices). All changes are backward-compatible. Full release notes.

    v3.0.0 (2017-12-17)

    First 3.x release — a major release with breaking changes (see the migration guide).

    • Introduces user-defined exceptions (json::exception and subtypes, each with an identifier).
    • Adds a non-throwing accept function and an allow_exceptions flag for parse, and an update function to merge objects.
    • Adds streaming for CBOR and MessagePack and allows storing NaN/infinity.
    • Non-UTF-8 strings now throw on serialization, and the iterator category changed to bidirectional.

    Full release notes.

    v2.1.1 (2017-02-25)

    Bug-fix release. All changes are backward-compatible.

    • Makes number parsing and serialization locale-independent with correct floating-point round-tripping; released files are now GPG-signed.

    Full release notes.

    v2.1.0 (2017-01-28)

    Feature release. All changes are backward-compatible.

    Full release notes.

    v2.0.10 (2017-01-02)

    Fixes several security-relevant bugs in the CBOR and MessagePack parsers found by OSS-Fuzz. All changes are backward-compatible. Full release notes.

    v2.0.9 (2016-12-16)

    Adds the CBOR and MessagePack binary formats. All changes are backward-compatible. Full release notes.

    v2.0.8 (2016-12-02)

    Adds the emplace and emplace_back functions and improves parsing and serialization performance. All changes are backward-compatible. Full release notes.

    v2.0.7 (2016-11-02)

    Fixes several parser bugs found through the "Parsing JSON is a Minefield" study (short files, encoding detection, surrogate pairs). All changes are backward-compatible. Full release notes.

    v2.0.6 (2016-10-15)

    Fixes operator[] for JSON pointers so that it creates missing values like the other overloads. All changes are backward-compatible. Full release notes.

    v2.0.5 (2016-09-14)

    Fixes a remaining stream end-of-file detection bug in the parser. All changes are backward-compatible. Full release notes.

    v2.0.4 (2016-09-11)

    Fixes stream end-of-file detection in the parser. All changes are backward-compatible. Full release notes.

    v2.0.3 (2016-08-31)

    Generalizes the parser to accept any contiguous sequence of one-byte elements and deprecates the input-stream constructor in favor of the parse function. All changes are backward-compatible. Full release notes.

    v2.0.2 (2016-07-31)

    Overhauls the parser (now rejecting unescaped control characters), tightens the class invariants, and cleans up the code. All changes are backward-compatible. Full release notes.

    v2.0.1 (2016-06-28)

    Fixes a performance regression in the dump function by adjusting the stream locale once per serialization. All changes are backward-compatible. Full release notes.

    v2.0.0 (2016-06-24)

    Feature release with a minor (potentially non-backward-compatible) API change from added noexcept and constexpr specifiers.

    Full release notes.

    v1.1.0 (2016-01-24)

    Bug-fix and feature release. All changes are backward-compatible.

    • Improves floating-point round-tripping, adds a get_ref accessor for stored values, and introduces runtime assertions.

    Full release notes.

    v1.0.0 (2015-12-28)

    First official release. Full release notes.

    See also

    • Migration Guide — how to future-proof your code for the next major version and replace deprecated functions.
    \ No newline at end of file + Releases - JSON for Modern C++
    Skip to content

    Releases

    This page summarizes the notable changes of every release and links to the relevant documentation. The complete release notes — including all changes, the download files, and their checksums — are published on the GitHub releases page.

    v3.12.0 (2025-04-11)

    Fixes bugs found in 3.11.3 and adds several features. All changes are backward-compatible.

    Full release notes.

    v3.11.3 (2023-11-28)

    Adds features and fixes bugs found in 3.11.2. All changes are backward-compatible.

    • Adds a custom base class as a node customization point.
    • Adds serialization-only conversion macros (NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE and NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE) and a clearer parse error for empty input.
    • Adds Bazel and Swift Package Manager build support.
    • Fixes custom allocators, a memory leak in adl_serializer's to_json, initializer-list construction when size_type is not int, and many compiler warnings.

    Full release notes.

    v3.11.2 (2022-08-12)

    Fixes bugs found in 3.11.1 and restructures the namespace. All changes are backward-compatible.

    • Fixes the value function (broken for strings, size types, and nullptr in 3.11.0) and makes json_fwd.hpp self-contained.
    • Restores using json_pointer as a key in associative containers and comparing it with strings.
    • Restructures the inline namespace and allows disabling the version component, and avoids heap allocations in the BJData parser.

    Full release notes.

    v3.11.1 (2022-08-01)

    Fixes a regression from 3.11.0. All changes are backward-compatible.

    Full release notes.

    v3.11.0 (2022-08-01)

    One of the largest releases ever. All changes are backward-compatible.

    This release introduced a UDL regression that was fixed in 3.11.1. Full release notes.

    v3.10.5 (2022-01-03)

    Bug-fix release. All changes are backward-compatible.

    • Guards the std::filesystem conversions behind compiler-support checks (JSON_HAS_FILESYSTEM), which can be set to 0 to disable them altogether.

    Full release notes.

    v3.10.4 (2021-10-16)

    Fixes regressions introduced in 3.10.0. All changes are backward-compatible.

    • Fixes the std::filesystem::path conversion (which could trigger a stack overflow and broke compilation on Windows).
    • Fixes compilation for types with an explicit defaulted constructor and for code relying on the return values of std::find and std::remove.

    Full release notes.

    v3.10.3 (2021-10-08)

    Fixes more regressions from 3.10.0. All changes are backward-compatible.

    • Fixes extended-diagnostics assertions triggered by update and by inserting into arrays.
    • Supports custom allocators when writing binary formats into a std::vector, and allows conversion from types that only provide begin()/end().

    Full release notes.

    v3.10.2 (2021-08-26)

    Re-release of 3.10.1, whose Git tag pointed at the wrong commit due to a bug in the release script. All changes are backward-compatible. Full release notes.

    v3.10.1 (2021-08-24)

    Fixes a regression from 3.10.0. All changes are backward-compatible.

    Full release notes.

    v3.10.0 (2021-08-17)

    Feature release. All changes are backward-compatible.

    • Adds extended diagnostic messages (JSON_DIAGNOSTICS) that prepend a JSON pointer to exception messages to pinpoint the offending value.
    • Adds a GDB pretty-printer and a cbor_tag_handler_t store option to keep CBOR tags as binary subtypes.
    • Supports containers with non-default-constructible types and parsing from std::byte.
    • Adds JSON_NO_IO to exclude the I/O headers and the JSON_HAS_CPP_* macros to override the detected C++ standard.

    Full release notes.

    v3.9.1 (2020-08-06)

    Fixes two regressions from 3.9.0. All changes are backward-compatible.

    Full release notes.

    v3.9.0 (2020-07-27)

    Feature release adding four long-requested features. All changes are backward-compatible.

    Full release notes.

    v3.8.0 (2020-06-14)

    Feature release. All changes are backward-compatible.

    • Introduces a binary value type that is read from and written to CBOR, BSON, and MessagePack, and can be shared between formats.
    • Generalizes the input adapters to read from any LegacyInputIterator container (3–10 % faster parsing).
    • Fixes contains for JSON pointers and makes the binary from_cbor/from_msgpack/etc. functions respect allow_exceptions.

    Full release notes.

    v3.7.3 (2019-11-17)

    Fixes a regression from 3.7.2 that could yield quadratic complexity in destructor calls. All changes are backward-compatible. Full release notes.

    v3.7.2 (2019-11-10)

    Fixes a stack overflow for deeply nested input by making the destructor iterative; parsing is now bounded only by available memory. All changes are backward-compatible. Full release notes.

    v3.7.1 (2019-11-06)

    Bug-fix release. All changes are backward-compatible.

    • Fixes a segmentation fault when serializing the std::int64_t minimum value and fixes contains for JSON pointers.
    • Allows items with a custom string type and makes json_pointer::back const.

    Full release notes.

    v3.7.0 (2019-07-28)

    Convenience features and house-keeping. All changes are backward-compatible.

    • Adds a contains overload that checks a JSON pointer without throwing, a generic to_string, and a return value for emplace_back.

    Full release notes.

    v3.6.1 (2019-03-20)

    Fixes a regression (GCC 7/8 compilation) and a <Windows.h> build error introduced in 3.6.0. All changes are backward-compatible. Full release notes.

    v3.6.0 (2019-03-20)

    Feature release. All changes are backward-compatible.

    • Reworks the JSON pointer interface (operator/, push_back, parent_pointer, …).
    • Adds a contains function to test for an object key and greatly improves the performance of integer serialization.

    Full release notes.

    v3.5.0 (2018-12-22)

    Feature release. All changes are backward-compatible.

    • Adds structured-binding support via the items function and reading from FILE* in the parse function.
    • Fixes the eofbit handling on input streams and a bug in the BSON SAX parser.

    Full release notes.

    v3.4.0 (2018-10-30)

    Feature release. All changes are backward-compatible.

    Full release notes.

    v3.3.0 (2018-10-05)

    Feature release. All changes are backward-compatible.

    • Adds GCC 4.8 support, the get_to function, and an overhauled and documented CMake integration.

    Full release notes.

    v3.2.0 (2018-08-20)

    Feature release. All changes are backward-compatible.

    • Adds a SAX interface and a non-recursive parser.
    • Adds parsing from wide-string types (std::wstring, std::u16string, std::u32string) and std::string_view (C++17), and round-tripping of std::map/std::unordered_map with non-string keys.

    Full release notes.

    v3.1.2 (2018-03-14)

    Bug-fix release. All changes are backward-compatible.

    • Fixes a memory leak in the parser callback and adds user-defined string-type support to the parser and serializer.

    Full release notes.

    v3.1.1 (2018-02-13)

    Bug-fix release. All changes are backward-compatible.

    • Fixes parsing of indefinite-length CBOR strings, a user-defined conversion to vector types, and overflow detection for UBJSON containers.

    Full release notes.

    v3.1.0 (2018-02-01)

    Feature release. All changes are backward-compatible.

    Full release notes.

    v3.0.1 (2017-12-29)

    Fixes small issues in the JSON Pointer and JSON Patch implementations (invalid "copy" targets and non-integer array indices). All changes are backward-compatible. Full release notes.

    v3.0.0 (2017-12-17)

    First 3.x release — a major release with breaking changes (see the migration guide).

    • Introduces user-defined exceptions (json::exception and subtypes, each with an identifier).
    • Adds a non-throwing accept function and an allow_exceptions flag for parse, and an update function to merge objects.
    • Adds streaming for CBOR and MessagePack and allows storing NaN/infinity.
    • Non-UTF-8 strings now throw on serialization, and the iterator category changed to bidirectional.

    Full release notes.

    v2.1.1 (2017-02-25)

    Bug-fix release. All changes are backward-compatible.

    • Makes number parsing and serialization locale-independent with correct floating-point round-tripping; released files are now GPG-signed.

    Full release notes.

    v2.1.0 (2017-01-28)

    Feature release. All changes are backward-compatible.

    Full release notes.

    v2.0.10 (2017-01-02)

    Fixes several security-relevant bugs in the CBOR and MessagePack parsers found by OSS-Fuzz. All changes are backward-compatible. Full release notes.

    v2.0.9 (2016-12-16)

    Adds the CBOR and MessagePack binary formats. All changes are backward-compatible. Full release notes.

    v2.0.8 (2016-12-02)

    Adds the emplace and emplace_back functions and improves parsing and serialization performance. All changes are backward-compatible. Full release notes.

    v2.0.7 (2016-11-02)

    Fixes several parser bugs found through the "Parsing JSON is a Minefield" study (short files, encoding detection, surrogate pairs). All changes are backward-compatible. Full release notes.

    v2.0.6 (2016-10-15)

    Fixes operator[] for JSON pointers so that it creates missing values like the other overloads. All changes are backward-compatible. Full release notes.

    v2.0.5 (2016-09-14)

    Fixes a remaining stream end-of-file detection bug in the parser. All changes are backward-compatible. Full release notes.

    v2.0.4 (2016-09-11)

    Fixes stream end-of-file detection in the parser. All changes are backward-compatible. Full release notes.

    v2.0.3 (2016-08-31)

    Generalizes the parser to accept any contiguous sequence of one-byte elements and deprecates the input-stream constructor in favor of the parse function. All changes are backward-compatible. Full release notes.

    v2.0.2 (2016-07-31)

    Overhauls the parser (now rejecting unescaped control characters), tightens the class invariants, and cleans up the code. All changes are backward-compatible. Full release notes.

    v2.0.1 (2016-06-28)

    Fixes a performance regression in the dump function by adjusting the stream locale once per serialization. All changes are backward-compatible. Full release notes.

    v2.0.0 (2016-06-24)

    Feature release with a minor (potentially non-backward-compatible) API change from added noexcept and constexpr specifiers.

    Full release notes.

    v1.1.0 (2016-01-24)

    Bug-fix and feature release. All changes are backward-compatible.

    • Improves floating-point round-tripping, adds a get_ref accessor for stored values, and introduces runtime assertions.

    Full release notes.

    v1.0.0 (2015-12-28)

    First official release. Full release notes.

    See also

    • Migration Guide — how to future-proof your code for the next major version and replace deprecated functions.
    \ No newline at end of file diff --git a/home/sponsors/index.html b/home/sponsors/index.html index f7cd1cc15..508bff58c 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 9b66a2704..98e321bee 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 51f08e44a..d2d9cc1a4 100644 --- a/integration/cmake/index.html +++ b/integration/cmake/index.html @@ -55,4 +55,4 @@ add_executable(myproject main.cpp) target_link_libraries(myproject PRIVATE nlohmann_json_modules) target_compile_definitions(myproject PRIVATE NLOHMANN_JSON_BUILD_MODULES) -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/integration/index.html b/integration/index.html index b7a247c29..3e2298e9f 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 18dfe4890..8dbca4fa9 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 c93ae307d..91bee815e 100644 --- a/integration/package_managers/index.html +++ b/integration/package_managers/index.html @@ -25,7 +25,7 @@ "string": "3.12.0" } } -

    Homebrew

    Summary

    formula: nlohmann-json

    If you are using Homebrew, you can install the library with

    brew install nlohmann-json
    +

    Homebrew

    Summary

    formula: nlohmann-json

    If you are using Homebrew, you can install the library with

    brew install nlohmann-json
     

    The header can be used directly in your code or via CMake.

    Example: Raw compilation
    1. Create the following file:

      example.cpp
      #include <nlohmann/json.hpp>
       #include <iostream>
       #include <iomanip>
      @@ -103,7 +103,7 @@ meson compile -C 
       }
       
    2. Build and run:

      bazel build //:main
       bazel run //:main
      -

    Conan

    Summary

    recipe: nlohmann_json

    If you are using Conan to manage your dependencies, merely add nlohmann_json/x.y.z to your conanfile's requires, where x.y.z is the release version you want to use.

    Example
    1. Create the following files:

      Conanfile.txt
      [requires]
      +

    Conan

    Summary

    recipe: nlohmann_json

    If you are using Conan to manage your dependencies, merely add nlohmann_json/x.y.z to your conanfile's requires, where x.y.z is the release version you want to use.

    Example
    1. Create the following files:

      Conanfile.txt
      [requires]
       nlohmann_json/3.12.0
       
       [generators]
      @@ -129,7 +129,7 @@ bazel run //:main
       
    2. Call Conan:

      conan install . --output-folder=build --build=missing
       
    3. Build:

      cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake" -DCMAKE_BUILD_TYPE=Release
       cmake --build build
      -

    Spack

    Summary

    package: nlohmann-json

    If you are using Spack to manage your dependencies, you can use the nlohmann-json package via

    spack install nlohmann-json
    +

    Spack

    Summary

    package: nlohmann-json

    If you are using Spack to manage your dependencies, you can use the nlohmann-json package via

    spack install nlohmann-json
     

    Please see the Spack project for any issues regarding the packaging.

    Example
    1. Create the following files:

      CMakeLists.txt
      cmake_minimum_required(VERSION 3.15)
       project(json_example)
       
      @@ -181,7 +181,7 @@ cmake --build build
       wget https://raw.githubusercontent.com/cpp-pm/gate/master/cmake/HunterGate.cmake -O cmake/HunterGate.cmake
       
    2. Build the project with CMake:

      cmake -S . -B build
       cmake --build build
      -

    vcpkg

    Summary

    package: nlohmann-json

    If you are using vcpkg on your project for external dependencies, then you can install the nlohmann-json package with

    vcpkg install nlohmann-json
    +

    vcpkg

    Summary

    package: nlohmann-json

    If you are using vcpkg on your project for external dependencies, then you can install the nlohmann-json package with

    vcpkg install nlohmann-json
     

    and follow the then displayed descriptions. Please see the vcpkg project for any issues regarding the packaging.

    Example
    1. Create the following files:

      CMakeLists.txt
      cmake_minimum_required(VERSION 3.15)
       project(json_example)
       
      @@ -252,7 +252,7 @@ cmake --build build
       conda activate json
       
    2. Install the package:

      conda install -c conda-forge nlohmann_json
       
    3. Build the code:

      g++ -std=c++11 -I$(conda info --base)/envs/json/include example.cpp -o example
      -

    MSYS2

    If you are using MSYS2, you can use the mingw-w64-nlohmann-json package, type pacman -S mingw-w64-i686-nlohmann-json or pacman -S mingw-w64-x86_64-nlohmann-json for installation. Please file issues here if you experience problems with the packages.

    MSYS2 clang64 package MSYS2 clangarm64 package MSYS2 mingw package MSYS2 ucrt64 package

    The package is updated automatically.

    MacPorts

    Summary

    port: nlohmann-json

    If you are using MacPorts, execute

    sudo port install nlohmann-json
    +

    MSYS2

    If you are using MSYS2, you can use the mingw-w64-nlohmann-json package, type pacman -S mingw-w64-i686-nlohmann-json or pacman -S mingw-w64-x86_64-nlohmann-json for installation. Please file issues here if you experience problems with the packages.

    MSYS2 clang64 package MSYS2 clangarm64 package MSYS2 mingw package MSYS2 ucrt64 package

    The package is updated automatically.

    MacPorts

    Summary

    port: nlohmann-json

    If you are using MacPorts, execute

    sudo port install nlohmann-json
     

    to install the nlohmann-json package.

    Example: Raw compilation
    1. Create the following file:

      example.cpp
      #include <nlohmann/json.hpp>
       #include <iostream>
       #include <iomanip>
      @@ -416,4 +416,4 @@ cmake --build build
           set_languages("cxx11")
       
    2. Build

      xmake
       
    3. 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.

    npm

    This project does not publish an official npm package. The npm package nlohmann-json (or similarly named packages) is not maintained or endorsed by this project. Use one of the package managers listed above, or integrate the single header directly.

    ESP-IDF and PlatformIO

    There is no official package published to the ESP-IDF Component Registry or the PlatformIO Registry. A community-maintained fork, Johboh/nlohmann-json, publishes this library to both registries on each new release and can be used as an unofficial component/package for ESP-IDF and PlatformIO projects. As the library is header-only, it can otherwise be used directly by adding its include/ directory to your component's/project's include paths, like any other integration method described on this page.

    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.

    npm

    This project does not publish an official npm package. The npm package nlohmann-json (or similarly named packages) is not maintained or endorsed by this project. Use one of the package managers listed above, or integrate the single header directly.

    ESP-IDF and PlatformIO

    There is no official package published to the ESP-IDF Component Registry or the PlatformIO Registry. A community-maintained fork, Johboh/nlohmann-json, publishes this library to both registries on each new release and can be used as an unofficial component/package for ESP-IDF and PlatformIO projects. As the library is header-only, it can otherwise be used directly by adding its include/ directory to your component's/project's include paths, like any other integration method described on this page.

    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 dfb9e092a..85e546ff2 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 e12b10c7c..bec770088 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,1018 +2,1018 @@ https://json.nlohmann.me/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/operator_gtgt/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/operator_literal_json/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/operator_literal_json_pointer/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/operator_ltlt/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/ordered_json/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/ordered_map/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/adl_serializer/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/adl_serializer/from_json/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/adl_serializer/to_json/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/accept/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/array/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/array_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/at/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/back/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/basic_json/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/begin/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/binary/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/binary_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/boolean_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/cbegin/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/cbor_tag_handler_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/cend/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/clear/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/contains/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/count/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/crbegin/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/crend/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/default_object_comparator_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/diff/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/dump/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/emplace/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/emplace_back/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/empty/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/end/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/end_pos/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/erase/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/error_handler_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/exception/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/find/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/flatten/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/format_as/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/from_bjdata/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/from_bson/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/from_cbor/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/from_msgpack/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/from_ubjson/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/front/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/get/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/get_allocator/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/get_binary/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/get_ptr/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/get_ref/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/get_to/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/input_format_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/insert/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/invalid_iterator/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/is_array/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/is_binary/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/is_boolean/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/is_discarded/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/is_null/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/is_number/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/is_number_float/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/is_number_integer/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/is_number_unsigned/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/is_object/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/is_primitive/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/is_string/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/is_structured/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/items/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/json_base_class_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/json_serializer/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/max_size/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/merge_patch/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/meta/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/number_float_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/number_integer_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/number_unsigned_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/object/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/object_comparator_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/object_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/operator%2B%3D/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/operator%3D/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/operator%5B%5D/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/operator_ValueType/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/operator_eq/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/operator_ge/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/operator_gt/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/operator_le/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/operator_lt/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/operator_ne/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/operator_spaceship/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/operator_value_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/other_error/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/out_of_range/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/parse/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/parse_error/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/parse_event_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/parser_callback_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/patch/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/patch_inplace/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/push_back/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/rbegin/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/rend/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/sax_parse/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/size/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/start_pos/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/std_formatter/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/std_hash/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/std_swap/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/string_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/swap/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/to_bjdata/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/to_bson/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/to_cbor/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/to_msgpack/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/to_string/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/to_ubjson/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/type/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/type_error/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/type_name/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/unflatten/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/update/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/value/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/value_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/basic_json/~basic_json/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/byte_container_with_subtype/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/byte_container_with_subtype/clear_subtype/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/byte_container_with_subtype/has_subtype/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/byte_container_with_subtype/set_subtype/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/byte_container_with_subtype/subtype/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/back/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/empty/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/front/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/json_pointer/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/operator_eq/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/operator_ne/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/operator_slash/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/operator_slasheq/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/operator_string_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/parent_pointer/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/pop_back/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/pop_front/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/push_back/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/push_front/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/string_t/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_pointer/to_string/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/binary/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/boolean/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/end_array/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/end_object/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/key/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/null/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/number_float/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/number_integer/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/number_unsigned/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/parse_error/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/start_array/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/start_object/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/json_sax/string/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_assert/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_brace_init_copy_semantics/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_diagnostic_positions/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_diagnostics/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_disable_enum_serialization/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_has_cpp_11/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_has_filesystem/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_has_ranges/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_has_static_rtti/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_has_std_format/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_has_three_way_comparison/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_no_io/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_noexception/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_skip_library_version_check/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_skip_unsupported_compiler_check/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_throw_user/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_use_global_udls/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_use_implicit_conversions/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_use_legacy_discarded_value_comparison/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/json_use_simdutf/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/nlohmann_define_type_with_names/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/nlohmann_json_namespace/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/nlohmann_json_namespace_begin/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/nlohmann_json_namespace_no_version/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/nlohmann_json_serialize_enum/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/nlohmann_json_serialize_enum_strict/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/api/macros/nlohmann_json_version_major/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/community/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/community/code_of_conduct/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/community/contribution_guidelines/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/community/ecosystem/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/community/governance/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/community/quality_assurance/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/community/security_policy/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/arbitrary_types/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/assertions/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/binary_values/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/comments/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/conversions/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/creating_values/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/enum_conversion/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/iterators/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/json_patch/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/json_pointer/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/macros/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/merge_patch/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/modifying_values/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/modules/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/namespace/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/object_order/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/serialization/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/trailing_commas/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/binary_formats/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/binary_formats/bjdata/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/binary_formats/bson/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/binary_formats/cbor/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/binary_formats/messagepack/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/binary_formats/ubjson/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/element_access/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/element_access/checked_access/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/element_access/default_value/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/element_access/unchecked_access/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/parsing/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/parsing/json_lines/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/parsing/parse_exceptions/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/parsing/parser_callbacks/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/parsing/sax_interface/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/types/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/features/types/number_handling/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/home/architecture/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/home/customers/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/home/debugging/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/home/design_goals/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/home/exceptions/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/home/faq/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/home/license/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/home/releases/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/home/sponsors/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/integration/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/integration/cmake/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/integration/migration_guide/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/integration/package_managers/ - 2026-09-13 + 2026-09-14 https://json.nlohmann.me/integration/pkg-config/ - 2026-09-13 + 2026-09-14 \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index 29419801b..30d6a2fc2 100644 Binary files a/sitemap.xml.gz and b/sitemap.xml.gz differ