#cpp #json #xml #ооп #serializable
Прошу дать ссылки, или, если есть желание, рассказать вкратце о красивом, удобном способе сериализации полей класса в C++. Приведу пример (не уверен, что так можно, но хотелось бы) - использовать свойства, аналогичные свойствам в C#, перед полями, которые будут учавствовать в сериализации (но: рефлексия ?), все автоматически упаковывается в JSON/XML (если это важно, то JSON меня интересует в большей степени), аналогично читается из JSON/XML и инициализирует соостветствующие поля объекта.
Ответы
Ответ 1
Универсального решения нет - и быть не может без рефлексии - которая будет - возможно - только в следующих версиях плюсов - да и с ней - если будут накладные расходы - универсального решения не будет. Вы можете выбирать из библиотек. По скорости или удобству использования. "свойства, аналогичные свойствам в C#, перед полями" реализуются всеми этими либами через макросы (слегка приврал), многое из того, что раньше можно было достичь только макросами сейчас можно достижимо средствами шаблонов C++, но: вот пример использования boost::serialization c макросами. Пример добавления рефлексии с шаблонами и макросами. RTTI с макросами Сами по себе макросы - зло, но бывают и необходимым злом. я для себя взял rapidjson (пушо очень быстрая) и сделал вокруг нее пару обвязок типа stringValue / intValue. В принципе, достаточно удобно пока. По поводу бустов: попользуйтесь, наверняка будет полезно. Выпиливать куски не надо, на рантайм это не повлияет, может быть только на время компиляции. Если подойдет другая либа для json/xml (POCO) например, берите ту, что вам удобнее в использовании. Вам главное инкапсулировать как можно больше, чтобы вы могли сменить потом либу, а не ловить ее вызовы по всему коду
Комментариев нет:
Отправить комментарий