JSON for Modern C++ version 3.6.0
Release date: 2019-03-20
SHA-256: ce9839370f28094c71107c405affb3b08c4a098154988014cbb0800b1c44a831 (json.hpp), 237c5e66e7f8186a02804ce9dbd5f69ce89fe7424ef84adf6142e973bd9532f4 (include.zip)
ℹ️ This release introduced a regression. Please update to version 3.6.1!
Summary
This release adds some convenience functions for JSON Pointers, introduces a contains
function to check if a key is present in an object, and improves the performance of integer serialization. Furthermore, a lot of small bug fixes and improvements have been made. All changes are backward-compatible.
✨ New Features
- Overworked the public interface for JSON Pointers. The creation of JSON Pointers is simplified with
operator/
andoperator/=
. JSON Pointers can be inspected withempty
,back
, andparent_pointer
, and manipulated withpush_back
andpop_back
. #1434 - Added a boolean method
contains
to check whether an element exists in a JSON object with a given key. Returns false when called on non-object types. #1471 #1474
🐛 Bug Fixes
- Fixed a compilation issues with libc 2.12. #1483 #1514
- Fixed endian conversion on PPC64. #1489
- Fixed library to compile with GCC 9. #1472 #1492
- Fixed a compilation issue with GCC 7 on CentOS. #1496
- Fixed an integer overflow. #1447
- Fixed buffer flushing in serializer. #1445 #1446
⚡ Improvements
- The performance of dumping integers has been greatly improved. #1411
- Added CMake parameter
JSON_Install
to control whether the library should be installed (default: on). #1330 - Fixed a lot of compiler and linter warnings. #1400 #1435 #1502
- Reduced required CMake version from 3.8 to 3.1. #1409 #1428 #1441 #1498
- Added
nodiscard
attribute tometa()
,array()
,object()
,from_cbor
,from_msgpack
,from_ubjson
,from_bson
, andparse
. #1433
🔨 Further Changes
- Added missing headers. #1500
- Fixed typos and broken links in README. #1417 #1423 #1425 #1451 #1455 #1491
- Fixed documentation of parse function. #1473
- Suppressed warning that cannot be fixed inside the library. #1401 #1468
- Imroved package manager suppert:
- Continuous Integration
- Updated thirdparty libraries:
- Catch 1.12.0 -> 1.12.2
- Google Benchmark 1.3.0 -> 1.4.1
- Doxygen 1.8.15 -> 1.8.16
🔥 Deprecated functions
This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
- Function
iterator_wrapper
are deprecated. Please use the member functionitems()
instead. - Functions
friend std::istream& operator<<(basic_json&, std::istream&)
andfriend std::ostream& operator>>(const basic_json&, std::ostream&)
are deprecated. Please usefriend std::istream& operator>>(std::istream&, basic_json&)
andfriend operator<<(std::ostream&, const basic_json&)
instead.