Мне нужен способ сериализации и десериализации объектов в JSON, как можно более автоматический.
Сериализация:
Для меня идеальным способом является то, что если я вызываю экземпляр JSONSerialize(), он возвращает строку с объектом JSON, которая имеет все общедоступные свойства объекта как "name_of_property": "value"
.
Для тех значений, которые являются примитивами, это просто, для объектов, которые он должен попытаться вызвать на каждом JSONSerialize() или ToString() или что-то подобное, чтобы рекурсивно сериализовать все общедоступные свойства.
Для коллекций он также должен вести себя корректно (только векторы/массивы будут в порядке).
Deserialize: просто создайте экземпляр данного объекта (скажем, собаку) и вызовите JSONDeserialize(json_string)
, и он должен заполнить все общедоступные свойства, создав необходимые объекты в случае, если свойства не являются примитивами или необходимыми коллекциями.
Пример должен выполняться следующим образом:
Dog *d1 = new Dog();
d1->name = "myDog";
string serialized = d1->JSONSerialize();
Dog *d2 = new Dog();
d2->JSONDeserialize(serialized);
std::cout << d2->name; // This will print "myDog"
Или так:
Dog *d1 = new Dog();
d1->name = "myDog";
string serialized = JSONSerializer.Serialize(d1);
Dog *d2 = JSONSerializer.Deserialize(serialized, Dog);
std::cout << d2->name; // This will print "myDog"
Как я могу легко снять это?