package derived
- Alphabetic
- By Inheritance
- derived
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- case class CustomTypeTag[A](typeTag: String) extends Product with Serializable
- trait DerivedOWrites[A, TT[A] <: TypeTag[A]] extends AnyRef
Derives an
OWrites[A]Derives an
OWrites[A]- TT
Type of TypeTag to use to discriminate alternatives of sealed traits
- trait DerivedOWritesInstances extends DerivedOWritesInstances1
- trait DerivedOWritesInstances1 extends DerivedOWritesInstances2
- trait DerivedOWritesInstances2 extends DerivedOWritesInstances3
- trait DerivedOWritesInstances3 extends AnyRef
- trait DerivedReads[A, TT[A] <: TypeTag[A]] extends AnyRef
Derives a
Reads[A]Derives a
Reads[A]- TT
Type of TypeTag to use to discriminate alternatives of sealed traits
- trait DerivedReadsInstances extends DerivedReadsInstances1
- trait DerivedReadsInstances1 extends DerivedReadsInstances2
- trait DerivedReadsInstances2 extends DerivedReadsInstances3
- trait DerivedReadsInstances3 extends AnyRef
- trait NameAdapter extends (String) => String
Adapter function to transform case classes member names during the derivation process
Adapter function to transform case classes member names during the derivation process
A NameAdapter can be used to customize the derivation process, allowing to apply a transformation function to case classes member names when deriving serializers/deserializers
For instance, it can be used to derive serializers/deserializers that use a different casing for the json keys.
For example, to derive a Format[A] that uses snake_case for the json keys (using the predefined NameAdapter.snakeCase)
import julienrf.json.derived import julienrf.json.derived.NameAdapter import play.api.libs.json.{Format, Json} case class Bar(camelCase: String) object Bar { implicit val format: Format[Bar] = derived.oformat[Bar](NameAdapter.snakeCase) }
scala> Json.toJson(Bar("a json value")) res0: play.api.libs.json.JsValue = {"camel_case":"a json value"} scala> Json.fromJson[Bar](Json.parse("""{"camel_case":"a json value"}""")) res1: play.api.libs.json.JsResult[Bar] = JsSuccess(Bar(a json value),)
- trait TypeTag[A] extends AnyRef
Implicit instances of this type define strategies to retrieve the type name of a given
FieldType[K, T]type. - trait TypeTagOFormat extends TypeTagReads with TypeTagOWrites
Strategy to serialize and de-serialize a tagged type
- trait TypeTagOWrites extends AnyRef
Strategy to serialize a tagged type (used to discriminate sum types).
Strategy to serialize a tagged type (used to discriminate sum types).
Built-in instances live in the companion object.
- trait TypeTagReads extends AnyRef
Strategy to deserialize a tagged type (used to discriminate sum types).
Strategy to deserialize a tagged type (used to discriminate sum types).
Built-in instances live in the companion object.
- trait TypeTagSetting extends AnyRef
Used for configuring the derivation process
Value Members
- def oformat[A](adapter: NameAdapter = NameAdapter.identity)(implicit derivedReads: Lazy[DerivedReads[A, ShortClassName]], derivedOWrites: Lazy[DerivedOWrites[A, ShortClassName]]): OFormat[A]
- def owrites[A](adapter: NameAdapter = NameAdapter.identity)(implicit derivedOWrites: Lazy[DerivedOWrites[A, ShortClassName]]): OWrites[A]
- def reads[A](adapter: NameAdapter = NameAdapter.identity)(implicit derivedReads: Lazy[DerivedReads[A, ShortClassName]]): Reads[A]
- object DerivedOWrites extends DerivedOWritesInstances
- object DerivedReads extends DerivedReadsInstances
- object NameAdapter
- object TypeTag
- object TypeTagOFormat
- object TypeTagOWrites
- object TypeTagReads
- object TypeTagSetting
- object flat
- object withTypeTag