Я пытаюсь преобразовать следующий класс дел в / из JSON с помощью Spray:
case class Interval(lower: Int, upper: Int)
Это достигается с помощью:
implicit val intervalFormat = jsonFormat2(Interval)
Компилируется, но выдает ошибку времени выполнения:
Невозможно автоматически определить имена полей класса дел и порядок для интервала, используйте перегрузку jsonFormat с явной спецификацией имени поля
Поиск по этой ошибке показывает, что она обычно возникает, когда подклассы объявляют дополнительные поля, а здесь это не так.
Я ошибаюсь, полагая, что Spray должен иметь возможность автоматически форматировать интервальный класс?
Если это так, то (как следует из сообщения об ошибке) я должен предоставить средство форматирования с более явной информацией о полях интервала? Как это может быть легко достигнуто?
РЕДАКТИРОВАТЬ : Ответ @retrospectacus предлагает несколько полезных моментов, но ни один из них не решает проблему. Обходное решение, которое я принял, состояло в том, чтобы предоставить явное описание типов и имен полей:
implicit val intervalFormat = jsonFormat[Int, Int,Interval](Interval, "lower", "upper")
Это работает, но я оставляю вопрос открытым, так как до сих пор не ясно, зачем это нужно.