https://github.com/fommil/spray-json-shapeless 自动生成 JsonFormat! 文档都在scaladoc里。
// always check maven central for the lastest release
libraryDependencies += "com.github.fommil" %% "spray-json-shapeless" % "1.1.0"
import spray.json._
import fommil.sjs.FamilyFormats._
package domain {
sealed trait SimpleTrait
case class Foo(s: String) extends SimpleTrait
case class Bar() extends SimpleTrait
case object Baz extends SimpleTrait
case class Faz(o: Option[String]) extends SimpleTrait
}
package use {
import domain._
Foo("foo").toJson // """{"s":"foo"}"""
Faz(Some("meh")).toJson // """{"o":"meh"}"""
Faz(None).toJson // """{}"""
Foo("foo"): SimpleTrait.toJson // """{"type":"Foo","s":"foo"}"""
Bar(): SimpleTrait.toJson // """{"type":"Bar"}"""
Baz: SimpleTrait.toJson // """{"type":"Baz"}"""
Fuzz: SimpleTrait.toJson // """{"type":"Fuzz"}"""
}