Package

julienrf.json

derived

Permalink

package derived

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. derived
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. trait DerivedOWrites[-A] extends AnyRef

    Permalink

    Derives an OWrites[A]

  2. trait DerivedOWritesInstances extends DerivedOWritesInstances1

    Permalink
  3. trait DerivedOWritesInstances1 extends DerivedOWritesInstances2

    Permalink
  4. trait DerivedOWritesInstances2 extends AnyRef

    Permalink
  5. trait DerivedReads[A] extends AnyRef

    Permalink

    Derives a Reads[A]

  6. trait DerivedReadsInstances extends DerivedReadsInstances1

    Permalink
  7. trait DerivedReadsInstances1 extends DerivedReadsInstances2

    Permalink
  8. trait DerivedReadsInstances2 extends AnyRef

    Permalink
  9. trait NameAdapter extends (String) ⇒ String

    Permalink

    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),)
  10. trait TypeTagOWrites extends AnyRef

    Permalink

    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.

  11. trait TypeTagReads extends AnyRef

    Permalink

    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.

Value Members

  1. object DerivedOWrites extends DerivedOWritesInstances

    Permalink
  2. object DerivedReads extends DerivedReadsInstances

    Permalink
  3. object NameAdapter

    Permalink
  4. object TypeTagOWrites

    Permalink
  5. object TypeTagReads

    Permalink
  6. object flat

    Permalink
  7. def oformat[A](adapter: NameAdapter = NameAdapter.identity)(implicit derivedReads: Lazy[DerivedReads[A]], derivedOWrites: Lazy[DerivedOWrites[A]]): OFormat[A]

    Permalink
  8. def owrites[A](adapter: NameAdapter = NameAdapter.identity)(implicit derivedOWrites: Lazy[DerivedOWrites[A]]): OWrites[A]

    Permalink
  9. def reads[A](adapter: NameAdapter = NameAdapter.identity)(implicit derivedReads: Lazy[DerivedReads[A]]): Reads[A]

    Permalink

Inherited from AnyRef

Inherited from Any

Ungrouped