So I have, for instance
sealed abstract class TemperatureUnit
object TemperatureUnits {
case object Celsius extends TemperatureUnit
case object Fahrenheit extends TemperatureUnit
}
object TemperatureUnitJsonProtocol extends DefaultJsonProtocol {
implicit object TemperatureUnitFormat extends RootJsonFormat[TemperatureUnit] {
override def read(json: JsValue) = ???
override def write(temperatureUnit: TemperatureUnit) = temperatureUnit match {
case TemperatureUnits.Celsius => JsString("Celsius")
case TemperatureUnits.FahrenHeit => JsString("Fahrenheit")
}
}
}
However, when I go and try to use this
TemperatureUnits.Celsius.toJson
I get error:
Error:(15, 22) Cannot find JsonWriter or JsonFormat type class for com.joshlemer.TemperatureUnits.Celsius.type
I also can't seem to be able to explicitly write a CelsiusFormat:
implicit object CelsiusFormat extends RootJsonFormat[TemperatureUnits.Celsius]
doesn't compile, as `TemperatureUnits.Celsius` cannot be found. However I can fix this and probably get what I want if I use 0-parameter case classes, but those are deprecated and so I don't want to use them.