У меня есть простая черта, которая в некоторых случаях смешивала классы. При преобразовании экземпляров этих классов в JSON через circe я понял, что поля со значениями по умолчанию в trait не включены в строку JSON.
Я использую io.circe.generic.auto._
для кодирования
Пример для иллюстрации:
trait Base {
var timestamp: Timestamp = new Timestamp(System.currentTimeMillis())
var version = 0
}
case class CC(id: String) extends Base
val cc = CC("testId")
val str = cc.asJson.noSpaces
что дает: {"id":"testId"}
Итак, str
не содержит значений отметки времени и версии, которые я ожидаю
Я предполагаю, что он использует кодировщик для класса case и просто пропускает черту. Что мне нужно сделать, чтобы включить и эти поля?
Пробовал это в разных версиях circe (0.3.0 и 0.6.0)
Также я могу декодировать эти поля (которые могут иметь другие значения) из строки JSON позже, или мне лучше оставить эти поля абстрактными и использовать аргументы по умолчанию в классах case?