У меня коллега практикует странный подход — не сериализует модели напрямую в json, а делает вспомогательные DTO-объекты (которые только для json), и пишет маппер, которые их уже копирует в модели и обратно.
Обосновывает это "разделением ответственности", что типа должны быть модели, которые используются в логике и модели для сериализации/десериализации.
Получается намного больше кода, и некрасиво.
Зачем так делать, и какой в этом смысл? Сам он бывший джавист.