JsonSchemaOps

final implicit class JsonSchemaOps[A](schemaA: JsonSchema[A]) extends JsonSchemaDocumentationOps[A]

Implicit methods for values of type JsonSchema

class Object
trait Matchable
class Any

Type members

Types

type Self = JsonSchema[A]

Value members

Concrete methods

def orFallbackTo[B](schemaB: JsonSchema[B]): JsonSchema[Either[A, B]]

A schema that can be either schemaA or schemaB.

A schema that can be either schemaA or schemaB.

  • Encoder interpreters forward to schemaA to encode a Left value or schemaB to encode a Right value,
  • Decoder interpreters first try to decode with schemaA, and fallback to schemaB in case of failure,
  • Documentation interpreter produce a oneOf JSON schema.

The difference between this operation and the operation orElse on “tagged” schemas is that this operation does not rely on a discriminator field between the alternative schemas. As a consequence, decoding is slower than with “tagged” schemas and provides less precise error messages.

Value parameters:
schemaB

fallback schema

Note:

Be careful to use ''disjoint'' schemas for A and B (none must be a subtype of the other), otherwise, a value of type B might also be successfully decoded as a value of type A, and this could have surprising consequences.

def withDescription(description: String): JsonSchema[A]
def withExample(example: A): JsonSchema[A]
def withTitle(title: String): JsonSchema[A]