Тип реализует интерфейс json.Marshaler (метод MarshalJSON() ([]byte, error)) или json.Unmarshaler (метод UnmarshalJSON([]byte) error). Пакет encoding/json вызывает эти методы вместо стандартной логики.
Типичные случаи: кастомный формат времени, сериализация enum по строковому значению, маппинг полей.