I have some case classes defined like follows:
sealed trait Breed
case object Beagle extends Breed
case object Mastiff extends Breed
case object Yorkie exten
You need to write the serializer like below:
Serializer:
case object BreedSerializer extends CustomSerializer[Breed](format => (
{
case JString(breed) => breed match {
case "Beagle" => Beagle
case "Mastiff" => Mastiff
case "Yorkie" => Yorkie
}
case JNull => null
},
{
case breed:Breed => JString(breed.getClass.getSimpleName.replace("$",""))
}))
Now, you will have to add this serialiser to the default formats.
import org.json4s.CustomSerializer
val serializers = List(BreedSerializer)
implicit lazy val serializerFormats: Formats = DefaultFormats ++ serializers
Hope this solves your problem.