前言
上文介绍了结构体(类)与JSON相互转换的基本操作步骤——http://t.csdnimg.cn/VQNa0
同事也提到了四个宏分为两类——侵入式,非侵入式。
一:侵入式与非侵入式
侵入式
struct People
{
std::string name;
int age;
NLOHMANN_DEFINE_TYPE_INTRUSIVE(People, name, age)
// NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(People, name, age)
};
-
NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT
-
NLOHMANN_DEFINE_TYPE_INTRUSIVE
侵入式在结构体(类)内部使用,因为侵入式宏会在编译时给结构体(类)生成两个to_json()和from_json();下面是json.hpp中关于两个侵入式宏的定义
#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \
friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \
friend