v3.11.0¶
Released on 2022-08-01.
One of the largest releases ever. All changes are backward-compatible.
- Allows
std::string_viewas object keys inat,operator[],value,erase,find,contains, andcount. - Adds the BJData binary format (the fifth supported format).
- Improves C++20 support, including
operator<=>and<ranges>-compatible iterators. - Adds a versioned, ABI-tagged inline namespace (
NLOHMANN_JSON_NAMESPACE) and the option to move the UDLs out of the global namespace (JSON_USE_GLOBAL_UDLS). - Adds
patch_inplace, default values for the conversion macros, and an option to disable enum serialization (JSON_DISABLE_ENUM_SERIALIZATION).
This release introduced a UDL regression that was fixed in 3.11.1. Full release notes.
API changes¶
Added (14 pages):
basic_json:default_object_comparator_t,from_bjdata,operator<=>,patch_inplace,to_bjdatajson_pointer:string_tmacros:JSON_DISABLE_ENUM_SERIALIZATION,JSON_HAS_RANGES,JSON_HAS_THREE_WAY_COMPARISON,JSON_SKIP_LIBRARY_VERSION_CHECK,JSON_USE_GLOBAL_UDLS,JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON,NLOHMANN_JSON_NAMESPACE,NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END
Changed:
operator""_json: Moved to namespacenlohmann::literals::json_literalsin 3.11.0.operator""_json_pointer: Moved to namespacenlohmann::literals::json_literalsin 3.11.0.operator<<(basic_json), nlohmann::operator<<(json_pointer): Overload 2 added.ordered_map: Added key_compare member in version 3.11.0.basic_json::at: Overload 3 added.basic_json::contains: Overload 1 added.basic_json::contains: Overload 2: Extended templateKeyTypeto support comparable types in version 3.11.0.basic_json::count: Overload 1 added.basic_json::count: Overload 2: Changed to support comparable key types in version 3.11.0.basic_json::erase: Overload 4 added.basic_json::find: Overload 1 added.basic_json::find: Overload 2: Changed to support comparable types in version 3.11.0.basic_json::object_comparator_t: Changed to be conditionally defined astypename object_t::key_compareordefault_object_comparator_tin version 3.11.0.basic_json::operator[]: Overload 2: TheT* keyoverloads forward to overload 3 since version 3.11.0.basic_json::operator[]: Overload 3 added.basic_json::operator==: Overload 1: Added C++20 member functions in version 3.11.0.basic_json::operator==: Overload 2: Added C++20 member functions in version 3.11.0.basic_json::operator>=: Overload 1: Conditionally removed since C++20 in version 3.11.0.basic_json::operator>=: Overload 2: Conditionally removed since C++20 in version 3.11.0.basic_json::operator>: Overload 1: Conditionally removed since C++20 in version 3.11.0.basic_json::operator>: Overload 2: Conditionally removed since C++20 in version 3.11.0.basic_json::operator<=: Overload 1: Conditionally removed since C++20 in version 3.11.0.basic_json::operator<=: Overload 2: Conditionally removed since C++20 in version 3.11.0.basic_json::operator<: Overload 1: Conditionally removed since C++20 in version 3.11.0.basic_json::operator<: Overload 2: Conditionally removed since C++20 in version 3.11.0.basic_json::operator!=: Overload 1: Added a C++20 member function in version 3.11.0.basic_json::value: Overload 1: Changed parameterdefault_valuetype fromconst ValueType&toValueType&&in version 3.11.0.basic_json::value: Overload 2 added.json_pointer::back: Changed return type tostring_tin version 3.11.0.json_pointer: Changed template parameter frombasic_jsonto string type in version 3.11.0.json_pointer::json_pointer: Changed type ofstostring_tin version 3.11.0.json_pointer::operator/: Overload 2: Changed type oftokentostring_tin version 3.11.0.json_pointer::operator/=: Overload 2: Changed type oftokentostring_tin version 3.11.0.json_pointer::operator string_t: Changed type tostring_tand deprecated in version 3.11.0.json_pointer::push_back: Changed type oftokentostring_tin version 3.11.0.json_pointer::to_string: Changed return type tostring_tin version 3.11.0.JSON_DIAGNOSTICS: As of version 3.11.0, the definition is allowed to vary between translation units.NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE: Overload 2 added.NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE: Overload 2 added.