blob: ad2a37f7349493b50a3646e80dff8ea5fded97a3 (
plain) (
tree)
|
|
package spray.json
import scala.annotation.StaticAnnotation
/** An annotation that designates that a sealed trait is an algebraic datatype
* (ADT), and that a field containing the serialized childrens' types should be
* added to the final JSON objects.
*
* Note that by default all sealed traits are treated as ADTs, with a type
* field called `@type`. This annotation enables overriding the name of that
* field and is really only useful if a child itself has a field called `type`
* that would otherwise result in a conflict.
*
* Example:
* {{{
* // the JSON field "kind" will contain the actual type of the serialized child
* @adt("kind") sealed abstract class Keyword(`@type`: String)
* case class If(`@type`: String) extends Keyword(`@type`)
* }}}
* @param typeFieldName the name of the field to inject into a serialized JSON
* object */
final class adt(val typeFieldName: String = "@type") extends StaticAnnotation
|