Полиморфная сериализация JSON — частая задача при проектировании API, UI-моделей или событийных структур. Пример структуры:[ {"type": "text", "content": "hello"}, {"type": "image", "url": "pic.jpg"} ]В Go такие данные принято представлять с помощью интерфейсов. Однако стандартный пакет encoding/json не умеет автоматически сериализовать и десериализовать структуры с полем-дискриминатором (например, "type"), которое определяет конкретный подтип. Приходится либо использовать громоздкие конструкции вроде map[string]any или json.RawMessage, либо вручную реализовывать интерфейсы json.Marshaler и json.Unmarshaler с разбором каждого варианта — такой подход быстро становится неудобным и слабо масштабируется.Для решения этой задачи были разработаны две библиотеки:poly — обёртка с использованием дженериков;polygen — генератор кода, расширяющий возможности poly. Почему 2 библиотеки?