Здесь есть библиотека, в которой есть экземпляры ToJSON и FromJSON для DSum и DMap.
https://github.com/obsidiansystems/dependent-sum-aeson-orphans
Обязательно посмотрите, как они работают, это хороший пример того, что может быть сделано с ограничениями-дополнениями .