NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END¶
#define NLOHMANN_JSON_NAMESPACE_BEGIN /* value */// (1)
#define NLOHMANN_JSON_NAMESPACE_END /* value */// (2)
These macros can be used to open and close the nlohmann namespace. See nlohmann Namespace for details.
- Opens the namespace.
- Closes the namespace.
Default definition¶
The default definitions open and close the nlohmann namespace. The precise definition of [NLOHMANN_JSON_NAMESPACE_BEGIN] varies as described here.
-
Default definition of
NLOHMANN_JSON_NAMESPACE_BEGIN:namespacenlohmann { inlinenamespacejson_abi_v3_12_0 { -
Default definition of
NLOHMANN_JSON_NAMESPACE_END:}// namespace json_abi_v3_12_0 }// namespace nlohmann
When these macros are not defined, the library will define them to their default definitions.
Examples¶
Example
The example shows how to use NLOHMANN_JSON_NAMESPACE_BEGIN/NLOHMANN_JSON_NAMESPACE_END from the How do I convert third-party types? page.
#include<iostream>
#include<optional>
#include<nlohmann/json.hpp>
// partial specialization (see https://json.nlohmann.me/features/arbitrary_types/)
NLOHMANN_JSON_NAMESPACE_BEGIN
template<typenameT>
structadl_serializer<std::optional<T>>
{
staticvoidto_json(json&j,conststd::optional<T>&opt)
{
if(opt==std::nullopt)
{
j=nullptr;
}
else
{
j=*opt;
}
}
};
NLOHMANN_JSON_NAMESPACE_END
intmain()
{
std::optional<int>o1=1;
std::optional<int>o2=std::nullopt;
NLOHMANN_JSON_NAMESPACE::jsonj;
j.push_back(o1);
j.push_back(o2);
std::cout<<j<<std::endl;
}
Output:
[1,null]
See also¶
Version history¶
- Added in version 3.11.0. Changed inline namespace name in version 3.11.2.