Packages

t

play.api.libs.json

JsMacrosWithOptions

trait JsMacrosWithOptions[Opts <: MacroOptions] extends JsMacros

Source
JsMacros.scala
Linear Supertypes
JsMacros, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. JsMacrosWithOptions
  2. JsMacros
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. macro def format[A]: OFormat[A]

    Creates a OFormat[T] by resolving, at compile-time, the case class fields or sealed family, and the required implicits.

    Creates a OFormat[T] by resolving, at compile-time, the case class fields or sealed family, and the required implicits.

    $macroWarning

    $macroTypeParam

    import play.api.libs.functional.syntax._
    import play.api.libs.json.{ Json, JsonConfiguration, __ }
    
    case class User(userName: String, age: Int)
    
    val userFormat1 = Json.format[User]
    // macro-compiler replaces Json.format[User] by injecting into compile chain
    // the exact code you would write yourself. This is strictly equivalent to:
    val userFormat2 = (
       (__ \ implicitly[JsonConfiguration].naming("userName")).format[String] and
       (__ \ implicitly[JsonConfiguration].naming("age")).format[Int]
    )(User.apply, unlift(User.unapply))
    Definition Classes
    JsMacrosWithOptions → JsMacros
  2. macro def reads[A]: Reads[A]

    Creates a Reads[T] by resolving, at compile-time, the case class fields or sealed family, and the required implicits.

    Creates a Reads[T] by resolving, at compile-time, the case class fields or sealed family, and the required implicits.

    $macroWarning

    $macroTypeParam

    import play.api.libs.json.{ Json, Reads }
    
    case class User(userName: String, age: Int)
    
    implicit val userReads: Reads[User] =
      Json.using[Json.MacroOptions with Json.DefaultValues].reads[User]
    Definition Classes
    JsMacrosWithOptions → JsMacros
  3. macro def writes[A]: OWrites[A]

    Creates a OWrites[T] by resolving, at compile-time, the case class fields or sealed family, and the required implicits.

    Creates a OWrites[T] by resolving, at compile-time, the case class fields or sealed family, and the required implicits.

    $macroWarning

    $macroTypeParam

    import play.api.libs.functional.syntax._
    import play.api.libs.json.{ Json, JsonConfiguration, __ }
    
    case class User(userName: String, age: Int)
    
    implicit val userWrites1 = Json.writes[User]
    // macro-compiler replaces Json.writes[User] by injecting into compile chain
    // the exact code you would write yourself. This is strictly equivalent to:
    implicit val userWrites2 = (
       (__ \ implicitly[JsonConfiguration].naming("userName")).write[String] and
       (__ \ implicitly[JsonConfiguration].naming("age")).write[Int]
    )(unlift(User.unapply))
    Definition Classes
    JsMacrosWithOptions → JsMacros