- Make the iterator range illustrations legible in dark mode (prefers-color-scheme rules inside the SVGs). - Add a "Byte layout" section with a color-coded byte table to each binary format page (BJData, BON8, BSON, CBOR, MessagePack, UBJSON), and highlight the smallest size per file in the comparison table. - Add "See also" sections to the overview pages that lacked one. - Split the release notes into one page per release, grouped by minor version on the overview page, with an "API changes" section per release generated from the API pages' version histories (hooks/api_changes.py). - Fact-check the release notes and version histories against the release tags and correct wrong or misleading entries (e.g., json_serializer 2.1.0, merge_patch 3.1.0, items, count, operator[], to_bjdata, std::string_view key support). Signed-off-by: Niels Lohmann <mail@nlohmann.me>
3.0 KiB
Integration
There are several ways to add this header-only library to a C++ project. The following flowchart summarizes how to pick one:
flowchart TD
A[Add the library to a C++ project] --> B{Already using CMake?}
B -- no --> C{Using pkg-config or plain Makefiles?}
C -- yes --> D[pkg-config]
C -- no --> E[Copy the single header]
B -- yes --> F{Library installed system-wide?}
F -- yes --> G["find_package()"]
F -- no --> H{Use a package manager?}
H -- yes --> I[Package manager]
H -- no --> J["add_subdirectory() or FetchContent"]
- Copy the single header, as described below — no build-system integration required.
- CMake: use
find_package()if the library is already installed,add_subdirectory()to embed the source tree, orFetchContentto download it at configure time; see CMake. - Package managers: install the library with a package manager such as Homebrew, Conan, or vcpkg; see Package Managers.
- pkg-config: if you use bare Makefiles instead of CMake, pkg-config can supply the include flags for an already-installed library.
Once the library is integrated, see the Migration Guide for how to keep your code future-proof across releases.
Header only
json.hpp is the single required
file in single_include/nlohmann or released here. You need to add
#include <nlohmann/json.hpp>
// 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 (see Compile times), and file
single_include/nlohmann/json_literals.hpp
for the user-defined string literals if you define
JSON_NO_AUTOMATIC_UDLS.
For the read-only, non-owning basic_json_document/basic_json_view
types, additionally include
single_include/nlohmann/json_view.hpp;
see Zero-copy JSON views.
See also
- CMake - integrate the library into a CMake project
- Package managers
- pkg-config
- Compile times - reduce the compile time overhead
- Migration guide - upgrade from an earlier version
- Releases