comment sérialiser des classes de cas avec des traits avec jsonspray

Je comprends que si j'ai:

case class Person(name: String)

Je peux utiliser

object PersonJsonImplicits extends DefaultJsonProtocol {
  implicit val impPerson = jsonFormat1(Person)
}

et donc sérialiser avec:

import com.example.PersonJsonImplicits._
import spray.json._
new Person("somename").toJson

cependant que faire Si j'ai

trait Animal
case class Person(name: String) extends Animal

et j'ai quelque part dans mon code

val animal = ???

et j'ai besoin de sérialiser et je veux utiliser json pulvérisation

qui sérialiseur dois-je ajouter que j'espérais avoir quelque chose comme:

object AnimalJsonImplicits extends DefaultJsonProtocol {
  implicit val impAnimal = jsonFormat???(Animal)
}

où peut-être j'ai besoin d'ajouter quelques traits afin de vérifier de quel type est l'Animal de sorte que si son une personne, je voudrais directe à la personne, mais rien trouvé... a la lecture de https://github.com/spray/spray-json et ne pas comprendre comment le faire..

alors, comment puis-je sérialiser l'ensemble de

trait Animal
case class Person(name: String) extends Animal

avec json spray?

source d'informationauteur Jas