読者です 読者をやめる 読者になる 読者になる

パースした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 を使用している。