Mixin that enables derivation of JSON formats for any product (case classes) or coproduct (sealed traits) types.
An annotation that designates that a sealed trait is a generalized algebraic datatype (GADT), and that a type field containing the serialized childrens' types should be added to the final JSON objects.
An annotation that designates that a sealed trait is a generalized algebraic datatype (GADT), and that a type field containing the serialized childrens' types should be added to the final JSON objects.
Note that by default all sealed traits are treated as GADTs, 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 result in a conflict.
Example:
// the JSON field "kind" will contain the actual type of the serialized child @gadt("kind") sealed abstract class Keyword(`type`: String) case class If(`type`: String) extends Keyword(`type`)