パースしたJSONを違うobjectに変換する。
したいこと
{"person" : {"name" : "testname", "age" : 29}}
のようなデータから
class Person { std::string _name; int _age; }; class Data { Person _person; };
のDataクラスに変換する。
ソースコード
int main() { std::string jsonData = "{\"person\" : {\"name\" : \"testname\", \"age\" : 29}}"; Object obj = load(jsonData); addConstructRule<Data, Person>("person"); addConstructRule<Person, std::string, double>("name", "age"); Data d = as<Data>(obj); std::cout << d._person._name << std::endl; std::cout << d._person._age << std::endl; return 0; }
addConstructRule<Data, Person>("person"); addConstructRule<Person, std::string, double>("name", "age");
上記のようにコンストラクターを登録する必要があるのがいけていない。
C#のConstructorInfo::Invokeのようなことができればよいのだけれでも。
JSONのパースは http://nsb248.hatenablog.com/entry/2016/02/08/151330 を使用している。