CustomSerializer
Breed
, :
import org.json4s._
import org.json4s.JsonDSL._
import org.json4s.native.JsonMethods._
import org.json4s.native.Serialization
import org.json4s.native.Serialization._
object BreedSerializer extends CustomSerializer[Breed]( format => (
{
case JString("Beagle") => Beagle
case JString("Mastiff") => Mastiff
case JString("Yorkie") => Yorkie
}, {
case Beagle => JString("Beagle")
case Mastiff => JString("Mastiff")
case Yorkie => JString("Yorkie")
}
))
:
val json1 = """{ "name": "Spike", "breed": "Yorkie" }"""
val json2 = """{ "name": "Pluto", "breed": "Mastiff" }"""
implicit val json4sFormats = Serialization.formats(NoTypeHints) + BreedSerializer
val dog1 = parse(json1).extract[Dog] // Dog(Spike,Yorkie)
val dog2 = parse(json2).extract[Dog] // Dog(Pluto,Mastiff)