class里通常有private成员,因此转换的时候与成员都是public的struct有少许的不同。
以下是带有就地初始化的情况:
#include <nlohmann/json.hpp>
#include <string>
#include <iostream>
using namespace std;
using json = nlohmann::json;
class PersonPrivateInit{
private:
string name = "";
int age = 0;
public:
PersonPrivateInit() = default;
PersonPrivateInit(string n , int a):name(n), age(a){}
NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(PersonPrivateInit, name, age)
void pOut(string p)
{
cout<<p<<" name:"<<name<<" age:"<<age<<endl;
}
};
void class_private_trans_json_with_init()
{
PersonPrivateInit p1("xi