Class JsSpecs

java.lang.Object
jsonvalues.spec.JsSpecs

public final class JsSpecs extends Object
The `JsSpecs` class provides a collection of static factory methods for creating JSON specifications (JsSpec). These specifications are used to define validation rules and constraints for JSON data structures to ensure that they conform to expected formats and patterns.

JSON specifications are essential for parsing and validating JSON data in applications, ensuring that the data adheres to predefined rules before processing or storing it.

This class simplifies the creation of these specifications for various JSON data types, including numbers, strings, arrays, objects, and more.

It provides factory methods for creating specifications for different JSON types, including numbers, strings, arrays, and objects. Additionally, custom validation predicates can be specified to enforce specific constraints on JSON data.

JSON specifications created with this class are immutable and can be reused for validating multiple JSON data instances.

See Also:
  • Method Details

    • arrayOfDec

      public static JsArraySpec arrayOfDec()
      non-nullable array of decimal numbers
      Returns:
      a spec
    • arrayOfBigInt

      public static JsArraySpec arrayOfBigInt()
      non-nullable array of integral numbers
      Returns:
      a spec
    • arrayOfDouble

      public static JsArraySpec arrayOfDouble()
      non-nullable array of double numbers
      Returns:
      a spec
    • arrayOfObj

      public static JsArraySpec arrayOfObj()
      non-nullable array of objects
      Returns:
      a spec
    • arrayOfBool

      public static JsArraySpec arrayOfBool()
      non-nullable array of booleans
      Returns:
      a spec
    • instant

      public static JsSpec instant()
      non-nullable instant spec
      Returns:
      a spec
    • arrayOfLong

      public static JsArraySpec arrayOfLong()
      non-nullable array of long numbers
      Returns:
      a spec
    • arrayOfLong

      public static JsArraySpec arrayOfLong(LongSchema schema)
      non-nullable array of long numbers. Each element of the array must satisfy the given schema.
      Returns:
      a spec
    • arrayOfLong

      public static JsArraySpec arrayOfLong(LongSchema schema, ArraySchema arraySchema)
      non-nullable array of long numbers. Each element of the array must satisfy the given schema. The array must satisfy the given array schema (min and max item, unique elements etc).
      Parameters:
      schema - the schema that each element of the array must satisfy
      arraySchema - the schema that the array must satisfy
      Returns:
      a spec
    • arrayOfInt

      public static JsArraySpec arrayOfInt()
      non-nullable array of integer numbers
      Returns:
      a spec
    • arrayOfStr

      public static JsArraySpec arrayOfStr()
      non-nullable array of strings
      Returns:
      a spec
    • binary

      public static JsSpec binary()
      non-nullable binary
      Returns:
      a spec
      See Also:
    • fixedBinary

      public static JsSpec fixedBinary(int length)
      non-nullable fixed-length binary
      Parameters:
      length - the length of the binary
      Returns:
      a spec
      See Also:
    • bigInteger

      public static JsSpec bigInteger()
      non-nullable big integer number
      Returns:
      a spec
    • longInteger

      public static JsSpec longInteger()
      non-nullable long number
      Returns:
      a spec
    • doubleNumber

      public static JsSpec doubleNumber()
      non-nullable double number
      Returns:
      a spec
    • doubleNumber

      public static JsSpec doubleNumber(DoubleSchema schema)
      non-nullable double number. Each element of the array must satisfy the given schema.
      Parameters:
      schema - the schema that each element of the array must satisfy
      Returns:
      a spec
    • bool

      public static JsSpec bool()
      non-nullable boolean
      Returns:
      a spec
    • decimal

      public static JsSpec decimal()
      non-nullable decimal number
      Returns:
      a spec
    • integer

      public static JsSpec integer()
      non-nullable integer number
      Returns:
      a spec
    • integer

      public static JsSpec integer(IntegerSchema schema)
      non-nullable integer number Each element of the array must satisfy the given schema.
      Parameters:
      schema - the schema that each element of the array must satisfy
      Returns:
      a spec
    • obj

      public static JsSpec obj()
      non-nullable json object
      Returns:
      a spec
    • array

      public static JsArraySpec array()
      non-nullable json array
      Returns:
      a spec
    • any

      public static JsSpec any()
      spec that is conformed by any value
      Returns:
      a spec
    • str

      public static JsSpec str()
      non-nullable string
      Returns:
      a spec
    • str

      public static JsSpec str(StrSchema schema)
      non-nullable string Each element of the array must satisfy the given schema.
      Parameters:
      schema - the schema that each element of the array must satisfy
      Returns:
      a spec
    • arrayOfInt

      public static JsArraySpec arrayOfInt(ArraySchema schema)
      non-nullable array of integer numbers. The array must satisfy the given schema (min and max item, unique elements etc).
      Parameters:
      schema - the schema that the array must satisfy
      Returns:
      a spec
    • arrayOfInt

      public static JsArraySpec arrayOfInt(IntegerSchema schema)
      non-nullable array of integer numbers. Each element of the array must satisfy the given schema.
      Parameters:
      schema - the schema that each element of the array must satisfy
      Returns:
      a spec
    • arrayOfInt

      public static JsArraySpec arrayOfInt(IntegerSchema schema, ArraySchema arraySchema)
      non-nullable array of integer numbers. Each element of the array must satisfy the given schema. The array must satisfy the given schema (min and max item, unique elements etc).
      Parameters:
      schema - the schema that each element of the array must satisfy
      arraySchema - the schema that the array must satisfy
      Returns:
      a spec
    • arrayOfDouble

      public static JsArraySpec arrayOfDouble(ArraySchema arraySchema)
      non-nullable array of double numbers. The array must satisfy the given schema (min and max item, unique elements etc).
      Parameters:
      arraySchema - the schema that the array must satisfy
      Returns:
      a spec
    • arrayOfDouble

      public static JsArraySpec arrayOfDouble(DoubleSchema schema)
      non-nullable array of double numbers. Each element of the array must satisfy the given schema.
      Parameters:
      schema - the schema that each element of the array must satisfy
      Returns:
      a spec
    • arrayOfDouble

      public static JsArraySpec arrayOfDouble(DoubleSchema schema, ArraySchema arraySchema)
      non-nullable array of double numbers. Each element of the array must satisfy the given schema. The array must satisfy the given schema (min and max item, unique elements etc).
      Parameters:
      schema - the schema that each element of the array must satisfy
      arraySchema - the schema that the array must satisfy
      Returns:
      a spec
    • arrayOfDouble

      public static JsArraySpec arrayOfDouble(DoublePredicate predicate, ArraySchema arraySchema)
      non-nullable array of decimal numbers. Each element of the array must satisfy the given predicate. The array must satisfy the given schema (min and max item, unique elements etc).
      Parameters:
      predicate - The predicate that each number in the array must satisfy.
      arraySchema - the schema that the array must satisfy
      Returns:
      a spec
    • arrayOfBigInt

      public static JsArraySpec arrayOfBigInt(ArraySchema arraySchema)
      non-nullable array of big integer numbers. The array must satisfy the given schema (min and max item, unique elements etc).
      Parameters:
      arraySchema - the schema that the array must satisfy
      Returns:
      a spec
    • arrayOfBigInt

      public static JsArraySpec arrayOfBigInt(BigIntSchema schema)
      non-nullable array of big integer numbers. Each element of the array must satisfy the given schema.
      Parameters:
      schema - the schema that each element of the array must satisfy
      Returns:
      a spec
    • arrayOfBigInt

      public static JsArraySpec arrayOfBigInt(BigIntSchema schema, ArraySchema arraySchema)
      non-nullable array of big integer numbers. Each element of the array must satisfy the given schema. The array must satisfy the given schema (min and max item, unique elements etc).
      Parameters:
      schema - the schema that each element of the array must satisfy
      arraySchema - the schema that the array must satisfy
      Returns:
      a spec
    • arrayOfObj

      public static JsArraySpec arrayOfObj(ArraySchema arraySchema)
      non-nullable array of objects. The array must satisfy the given schema (min and max item, unique elements etc).
      Parameters:
      arraySchema - the schema that the array must satisfy
      Returns:
      a spec
    • arrayOfDec

      public static JsArraySpec arrayOfDec(ArraySchema arraySchema)
      non-nullable array of big decimal numbers. The array must satisfy the given schema (min and max item, unique elements etc).
      Parameters:
      arraySchema - the schema that the array must satisfy
      Returns:
      a spec
    • arrayOfDec

      public static JsArraySpec arrayOfDec(DecimalSchema schema)
      non-nullable array of big decimal numbers. Each element of the array must satisfy the given schema.
      Parameters:
      schema - the schema that each element of the array must satisfy
      Returns:
      a spec
    • arrayOfDec

      public static JsArraySpec arrayOfDec(DecimalSchema schema, ArraySchema arraySchema)
    • arrayOfBool

      public static JsArraySpec arrayOfBool(ArraySchema schema)
      Returns a specification for an array of booleans with a specified minimum and maximum length.
      Parameters:
      schema - The schema defining constraints for the array.
      Returns:
      A specification for an array of booleans with the specified length constraints.
    • arrayOfStr

      public static JsArraySpec arrayOfStr(ArraySchema arraySchema)
      Returns a specification for an array of strings with a specified minimum and maximum length.
      Parameters:
      arraySchema - The schema defining constraints for the array.
      Returns:
      A specification for an array of strings with the specified length constraints.
    • arrayOfStr

      public static JsArraySpec arrayOfStr(StrSchema elemSchema, ArraySchema arraySchema)
      Returns a specification for an array of strings with a specified minimum and maximum length, and each element conforming to the given element schema.
      Parameters:
      elemSchema - The schema defining constraints for each element in the array.
      arraySchema - The schema defining constraints for the array.
      Returns:
      A specification for an array of strings with the specified length constraints and element schema.
    • arrayOfLong

      public static JsArraySpec arrayOfLong(ArraySchema schema)
      Returns a specification for an array of long numbers with a specified minimum and maximum length.
      Parameters:
      schema - The schema defining constraints for the array.
      Returns:
      A specification for an array of long numbers with the specified length constraints.
    • cons

      public static JsSpec cons(JsValue value)
      Returns a required and non-nullable specification that specifies a constant value.
      Parameters:
      value - The constant value.
      Returns:
      A specification that enforces the provided constant value.
    • cons

      public static JsSpec cons(String name, JsValue value)
    • str

      public static JsSpec str(Predicate<String> predicate)
      Returns a specification for a non-nullable string, where the string satisfies the given predicate.
      Parameters:
      predicate - The predicate that the string must satisfy.
      Returns:
      A specification for strings based on the specified predicate.
    • arrayOfIntSuchThat

      public static JsArraySpec arrayOfIntSuchThat(Predicate<JsArray> predicate)
      Returns a specification for a non-nullable array of integer numbers, where each element of the array satisfies the given predicate.
      Parameters:
      predicate - The predicate that the entire array must satisfy.
      Returns:
      An array specification for integer numbers based on the specified predicate.
    • arrayOfDec

      public static JsArraySpec arrayOfDec(Predicate<BigDecimal> predicate)
      Returns a specification for a non-nullable array of decimal numbers, where each element of the array satisfies the given predicate.
      Parameters:
      predicate - The predicate that each decimal number in the array must satisfy.
      Returns:
      An array specification for decimal numbers based on the specified predicate.
    • arrayOfDouble

      public static JsArraySpec arrayOfDouble(Predicate<Double> predicate)
      Returns a specification for a non-nullable array of decimal numbers, where each element of the array satisfies the given predicate.
      Parameters:
      predicate - The predicate that each decimal number in the array must satisfy.
      Returns:
      An array specification for decimal numbers based on the specified predicate.
    • arrayOfDec

      public static JsArraySpec arrayOfDec(Predicate<BigDecimal> predicate, ArraySchema arraySchema)
      Returns a specification for a non-nullable array of decimal numbers, where each element of the array satisfies the given predicate. The array must have a size within the specified range.
      Parameters:
      predicate - The predicate that each decimal number in the array must satisfy.
      arraySchema - The schema defining constraints for the array.
      Returns:
      An array specification for decimal numbers based on the specified predicate and size range.
    • arrayOfDecSuchThat

      public static JsArraySpec arrayOfDecSuchThat(Predicate<JsArray> predicate)
      Returns a specification for a non-nullable array of decimal numbers, where each element of the array satisfies the given predicate.
      Parameters:
      predicate - The predicate that each decimal number in the array must satisfy.
      Returns:
      An array specification for decimal numbers based on the specified predicate.
    • arrayOfBigInt

      public static JsArraySpec arrayOfBigInt(Predicate<BigInteger> predicate)
      Returns a specification for a non-nullable array of integral numbers, where each element of the array satisfies the given predicate.
      Parameters:
      predicate - The predicate that each integral number in the array must satisfy.
      Returns:
      An array specification for integral numbers based on the specified predicate.
    • arrayOfBigInt

      public static JsArraySpec arrayOfBigInt(Predicate<BigInteger> predicate, ArraySchema arraySchema)
      Returns a specification for a non-nullable array of integral numbers, where each element of the array satisfies the given predicate. The array must have a minimum and maximum size as specified by the parameters.
      Parameters:
      predicate - The predicate that each integral number in the array must satisfy.
      arraySchema - The schema defining constraints for the array.
      Returns:
      An array specification for integral numbers based on the specified predicate and size constraints.
    • arrayOfBigIntSuchThat

      public static JsArraySpec arrayOfBigIntSuchThat(Predicate<JsArray> predicate)
      Returns a specification for a non-nullable array of integral numbers, where each element of the array satisfies the given predicate.
      Parameters:
      predicate - The predicate that each integral number in the array must satisfy.
      Returns:
      An array specification for integral numbers based on the specified predicate.
    • arrayOfObj

      public static JsArraySpec arrayOfObj(Predicate<JsObj> predicate)
      Returns a specification for a non-nullable array of objects, where each element of the array satisfies the given predicate.
      Parameters:
      predicate - The predicate that each object in the array must satisfy.
      Returns:
      An array specification for objects based on the specified predicate.
    • arrayOfObj

      public static JsArraySpec arrayOfObj(Predicate<JsObj> predicate, ArraySchema arraySchema)
      Returns a specification for a non-nullable array of objects, where each element of the array satisfies the given predicate.
      Parameters:
      predicate - The predicate that each object in the array must satisfy.
      arraySchema - The schema defining constraints for the array.
      Returns:
      An array specification for objects based on the specified predicate and size constraints.
    • arrayOfObjSuchThat

      public static JsArraySpec arrayOfObjSuchThat(Predicate<JsArray> predicate)
      Returns a specification for a non-nullable array of objects that satisfies the given predicate.
      Parameters:
      predicate - The predicate that the array must satisfy.
      Returns:
      An array specification for objects based on the specified predicate.
    • integer

      public static JsSpec integer(IntPredicate predicate)
      Returns a specification for a non-nullable integer number that satisfies the given predicate.
      Parameters:
      predicate - The predicate that the integer must satisfy.
      Returns:
      A specification for integer numbers based on the specified predicate.
    • arrayOfStrSuchThat

      public static JsArraySpec arrayOfStrSuchThat(Predicate<JsArray> predicate)
      Returns a specification for a non-nullable array of strings that satisfies the given predicate.
      Parameters:
      predicate - The predicate that the array must satisfy.
      Returns:
      An array specification for strings based on the specified predicate.
    • array

      public static JsArraySpec array(Predicate<JsValue> predicate)
      Returns a specification for a non-nullable array, where each element of the array satisfies the given predicate.
      Parameters:
      predicate - The predicate that each value in the array must satisfy.
      Returns:
      An array specification for values based on the specified predicate.
    • arrayOfLong

      public static JsArraySpec arrayOfLong(LongPredicate predicate)
      Returns a specification for a non-nullable array of long numbers, where each element of the array satisfies the given predicate.
      Parameters:
      predicate - The predicate that each long number in the array must satisfy.
      Returns:
      An array specification for long numbers based on the specified predicate.
    • arrayOfLong

      public static JsArraySpec arrayOfLong(LongPredicate predicate, ArraySchema schema)
      Returns a specification for a non-nullable array of long numbers, where each element of the array satisfies the given predicate. The array must satisfy the given schema (min and max item, unique elements etc).
      Parameters:
      predicate - The predicate that each long number in the array must satisfy.
      schema - The schema defining constraints for the array.
      Returns:
      An array specification for long numbers based on the specified predicate.
    • arrayOfBoolSuchThat

      public static JsArraySpec arrayOfBoolSuchThat(Predicate<JsArray> predicate)
      Returns a specification for a non-nullable array of booleans that satisfies the given predicate.
      Parameters:
      predicate - The predicate that the array must satisfy.
      Returns:
      An array specification for booleans based on the specified predicate.
    • arrayOfDoubleSuchThat

      public static JsArraySpec arrayOfDoubleSuchThat(Predicate<JsArray> predicate)
      Returns a specification for a non-nullable array of double that satisfies the given predicate.
      Parameters:
      predicate - The predicate that the array must satisfy.
      Returns:
      An array specification for double based on the specified predicate.
    • longInteger

      public static JsSpec longInteger(LongPredicate predicate)
      Returns a specification for a non-nullable long number that satisfies the given predicate.
      Parameters:
      predicate - The predicate that the long number must satisfy.
      Returns:
      A specification for long numbers based on the specified predicate.
    • longInteger

      public static JsSpec longInteger(LongSchema schema)
      Returns a specification for a non-nullable long number that satisfies the given schema.
      Parameters:
      schema - The schema the long number must satisfy.
      Returns:
      A specification for long numbers based on the specified schema.
    • doubleNumber

      public static JsSpec doubleNumber(DoublePredicate predicate)
      Returns a specification for a non-nullable double number that satisfies the given predicate.
      Parameters:
      predicate - The predicate that the double number must satisfy.
      Returns:
      A specification for long numbers based on the specified predicate.
    • decimal

      public static JsSpec decimal(Predicate<BigDecimal> predicate)
      Returns a specification for a non-nullable decimal number that satisfies the given predicate.
      Parameters:
      predicate - The predicate that the decimal number must satisfy.
      Returns:
      A specification for decimal numbers based on the specified predicate.
    • decimal

      public static JsSpec decimal(DecimalSchema schema)
      Returns a specification for a non-nullable decimal number that satisfies the given schema
      Parameters:
      schema - The schema defining constraints for the decimal number.
      Returns:
      A specification for decimal numbers based on the specified schema.
    • bigInteger

      public static JsSpec bigInteger(Predicate<BigInteger> predicate)
      Returns a specification for a non-nullable big integer number that satisfies the given predicate.
      Parameters:
      predicate - The predicate that the integral number must satisfy.
      Returns:
      A specification for integral numbers based on the specified predicate.
    • bigInteger

      public static JsSpec bigInteger(BigIntSchema schema)
      Returns a specification for a non-nullable big integer number that satisfies the given schema.
      Parameters:
      schema - The schema defining constraints for the big integer number.
      Returns:
      A specification for integral numbers based on the specified schema.
    • arrayOfStr

      public static JsArraySpec arrayOfStr(Predicate<String> predicate)
      Returns a specification for a non-nullable array of strings, where each element of the array satisfies the given predicate.
      Parameters:
      predicate - The predicate that each string in the array must satisfy.
      Returns:
      An array specification for strings based on the specified predicate.
    • arrayOfStr

      public static JsArraySpec arrayOfStr(StrSchema schema)
      Returns a specification for a non-nullable array of strings, where each element of the array satisfies the given schema.
      Parameters:
      schema - The schema that each element of the array must satisfy.
      Returns:
      An array specification for strings based on the specified predicate and size constraints.
    • arrayOfStr

      public static JsArraySpec arrayOfStr(Predicate<String> predicate, ArraySchema arraySchema)
      Returns a specification for a non-nullable array of strings, where each element of the array satisfies the given predicate. The array must satisfy the given schema (min and max item, unique elements etc).
      Parameters:
      predicate - The predicate that each string in the array must satisfy.
      arraySchema - The schema defining constraints for the array.
      Returns:
      An array specification for strings based on the specified predicate and size constraints.
    • any

      public static JsSpec any(Predicate<JsValue> predicate)
      Returns a specification that accepts any JSON value for which the given predicate evaluates to true.
      Parameters:
      predicate - The predicate that determines whether a JSON value is accepted.
      Returns:
      A specification that validates JSON values based on the specified predicate.
    • binary

      public static JsSpec binary(Predicate<byte[]> predicate)
      Returns a specification for a non-nullable binary data that satisfies the given predicate.
      Parameters:
      predicate - The predicate the JSON binary data is tested on.
      Returns:
      A specification that enforces the specified condition for JSON binary data.
      See Also:
    • instant

      public static JsSpec instant(Predicate<Instant> predicate)
      Returns a specification for a non-nullable instant that satisfies the given predicate.
      Parameters:
      predicate - The predicate the JSON instant is tested on.
      Returns:
      A specification that enforces the specified condition for JSON instants.
    • instant

      public static JsSpec instant(InstantSchema schema)
      Returns a specification for a non-nullable JSON instant that satisfies the given schema.
      Parameters:
      schema - The schema the instant must satisfy.
      Returns:
      A specification that enforces the specified condition for JSON long numbers.
    • obj

      public static JsSpec obj(Predicate<JsObj> predicate)
      Returns a specification for a non-nullable object that satisfies the given predicate.
      Parameters:
      predicate - The predicate the object is tested on.
      Returns:
      A specification that enforces the specified condition for JSON objects.
    • arrayOfLongSuchThat

      public static JsArraySpec arrayOfLongSuchThat(Predicate<JsArray> predicate)
      Returns a specification for a non-nullable array of long numbers that satisfies the given predicate.
      Parameters:
      predicate - The predicate the array is tested on.
      Returns:
      An array specification that enforces the specified condition for arrays of long numbers.
    • arraySuchThat

      public static JsArraySpec arraySuchThat(Predicate<JsArray> predicate)
      Returns a specification for a non-nullable array that satisfies the given predicate.
      Parameters:
      predicate - The predicate the array is tested on.
      Returns:
      An array specification that enforces the specified condition for arrays.
    • arrayOfInt

      public static JsArraySpec arrayOfInt(IntPredicate predicate)
      Returns a specification for a non-nullable array of integer numbers, where each element of the array satisfies the given predicate.
      Parameters:
      predicate - The predicate each integer number of the array is tested on.
      Returns:
      An array specification that enforces the specified condition for integer elements.
    • arrayOfInt

      public static JsArraySpec arrayOfInt(IntPredicate predicate, ArraySchema arraySchema)
      Returns a specification for a non-nullable array of integer numbers, where each element of the array satisfies the given predicate.
      Parameters:
      predicate - The predicate each integer number of the array is tested on.
      arraySchema - The schema defining constraints for the array.
      Returns:
      An array specification that enforces the specified conditions.
    • tuple

      public static JsArraySpec tuple(JsSpec spec, JsSpec... others)
      Returns a tuple specification where each nth element of the tuple is specified by the nth given spec.
      Parameters:
      spec - The specification for the first element.
      others - The specifications for the rest of the elements.
      Returns:
      A specification for a tuple that enforces the specified structure.
    • oneValOf

      public static <O extends JsValue> JsSpec oneValOf(List<O> cons)
      Returns a specification that validates if a JSON value is one of the given possible values.
      Type Parameters:
      O - The type of the possible JSON values (subtype of JsValue).
      Parameters:
      cons - The list of possible JSON values.
      Returns:
      A specification that checks if a JSON value matches one of the provided values.
    • oneValOf

      @SafeVarargs public static <O extends JsValue> JsSpec oneValOf(O elem, O... others)
      Returns a specification that validates if a JSON value is one of the given possible values.
      Type Parameters:
      O - The type of the possible JSON values (subtype of JsValue).
      Parameters:
      elem - The first possible JSON value.
      others - Additional possible JSON values.
      Returns:
      A specification that checks if a JSON value matches one of the provided values.
    • oneSpecOf

      public static JsSpec oneSpecOf(List<? extends JsSpec> specs)
      Returns a specification that validates if a JSON value is one of the given possible specifications.
      Parameters:
      specs - The list of possible JSON specifications.
      Returns:
      A specification that checks if a JSON value matches one of the provided specifications.
    • oneSpecOf

      public static JsSpec oneSpecOf(JsSpec elem, JsSpec... others)
      Returns a specification that validates if a JSON value is one of the given possible specifications.
      Parameters:
      elem - The first possible JSON specification.
      others - Additional possible JSON specifications.
      Returns:
      A specification that checks if a JSON value matches one of the provided specifications.
    • oneStringOf

      public static JsSpec oneStringOf(List<String> cons)
      Returns a specification that validates if a JSON value is one of the given possible symbols.
      Parameters:
      cons - The list of possible JSON values.
      Returns:
      A specification that checks if a JSON value matches one of the provided values.
    • oneStringOf

      public static JsSpec oneStringOf(String elem, String... others)
      Returns a specification that validates if a JSON value is one of the given possible symbols.
      Parameters:
      elem - The first possible symbol value.
      others - Additional possible symbol values.
      Returns:
      A specification that checks if a JSON value matches one of the provided symbol values.
    • mapOfLong

      public static JsSpec mapOfLong()
      Returns a specification that validates that the JSON is an object, and the value of each key is a long number.
      Returns:
      A JSON specification for objects with long number values.
    • mapOfInteger

      public static JsSpec mapOfInteger()
      Returns a specification that validates that the JSON is an object, and the value of each key is an integer.
      Returns:
      A JSON specification for objects with integer values.
    • mapOfBigInteger

      public static JsSpec mapOfBigInteger()
      Returns a specification that validates that the JSON is an object, and the value of each key is a big integer.
      Returns:
      A JSON specification for objects with big integer values.
    • mapOfBigInteger

      public static JsSpec mapOfBigInteger(BigIntSchema schema)
      Returns a specification that validates that the JSON is an object, and the value of each key is a big integer that satisfies the given schema.
      Parameters:
      schema - the schema that each element of the map must satisfy
      Returns:
      A JSON specification for objects with big integer values.
    • mapOfBinary

      public static JsSpec mapOfBinary()
      Returns a specification that validates that the JSON is an object, and the value of each key is a binary.
      Returns:
      A JSON specification for objects with binary values.
    • mapOfDouble

      public static JsSpec mapOfDouble()
      Returns a specification that validates that the JSON is an object, and the value of each key is a double.
      Returns:
      A JSON specification for objects with double values.
    • mapOfDouble

      public static JsSpec mapOfDouble(DoubleSchema doubleSchema)
      Returns a specification that validates that the JSON is an object, and the value of each key is a double that satisfies the given schema.
      Parameters:
      doubleSchema - the schema that each element of the map must satisfy
      Returns:
      A JSON specification for objects with double values.
    • mapOfDecimal

      public static JsSpec mapOfDecimal()
      Returns a specification that validates that the JSON is an object, and the value of each key is a decimal number.
      Returns:
      A JSON specification for objects with decimal number values.
    • mapOfDecimal

      public static JsSpec mapOfDecimal(DecimalSchema decimalSchema)
      Returns a specification that validates that the JSON is an object, and the value of each key is a decimal number that satisfies the given schema.
      Parameters:
      decimalSchema - the schema that each element of the map must satisfy
      Returns:
      A JSON specification for objects with decimal number values.
    • mapOfBool

      public static JsSpec mapOfBool()
      Returns a specification that validates that the JSON is an object, and the value of each key is a boolean.
      Returns:
      A JSON specification for objects with boolean values.
    • mapOfInstant

      public static JsSpec mapOfInstant()
      Returns a specification that validates that the JSON is an object, and the value of each key is an instant.
      Returns:
      A JSON specification for objects with instant values.
    • mapOfInstant

      public static JsSpec mapOfInstant(InstantSchema instantSchema)
      Returns a specification that validates that the JSON is an object, and the value of each key is an instant that satifies the given schema.
      Parameters:
      instantSchema - the schema that each element of the map must satisfy
      Returns:
      A JSON specification for objects with instant values.
    • mapOfObj

      public static JsSpec mapOfObj(JsObjSpec spec)
      Returns a specification that validates that the JSON is an object, and the value of each key is an object.
      Parameters:
      spec - the spec of the values of the map
      Returns:
      A JSON specification for objects with object values.
    • mapOfStr

      public static JsSpec mapOfStr()
      Returns a specification that validates that the JSON is an object, and the value of each key is a string.
      Returns:
      A JSON specification for objects with string values.
    • mapOfStr

      public static JsSpec mapOfStr(StrSchema schema)
    • mapOfSpec

      public static JsSpec mapOfSpec(JsSpec spec)
      Returns a specification that validates that the JSON is an object, and the value of each key is a value that conforms the given spec.
      Parameters:
      spec - the spec of the values
      Returns:
      A JSON specification for maps.
    • arrayOfSpec

      public static JsArraySpec arrayOfSpec(JsSpec spec)
      Returns a specification that validates that the JSON is an array, and the value of each element is a value that conforms the given spec.
      Parameters:
      spec - the spec of the elements
      Returns:
      A JSON specification for arrays.
    • arrayOfSpec

      public static JsArraySpec arrayOfSpec(JsSpec spec, ArraySchema arraySchema)
      Returns a specification that validates that the JSON is an array, and the value of each element is a value that conforms the given spec.
      Parameters:
      spec - the spec of the elements
      arraySchema - the schema that the array must satisfy
      Returns:
      A JSON specification for arrays.
    • ofNamedSpec

      public static JsSpec ofNamedSpec(String name)
      Returns a named spec from the cache based on the provided name. Named specs are created using the JsObjSpecBuilder and are cached for efficient retrieval and use in recursive specifications.

      Named specs represent reusable specifications that can be referenced in other specs, allowing for the creation of recursive data structures. Example usage:

       
       var spec = JsObjSpecBuilder.withName("person")
                                  .build(JsObjSpec.of("name", JsSpecs.str(),
                                                      "age", JsSpecs.integer(),
                                                      "father", JsSpecs.ofNamedSpec("person")
                                                     )
                                                  .withOptKeys("father")
                                        );
       
       
      Parameters:
      name - The name of the named spec to retrieve from the cache.
      Returns:
      A named spec with the specified name.
      See Also:
    • ofNamedSpec

      public static JsSpec ofNamedSpec(String name, JsSpec spec)
      Creates and caches a named spec.
      Parameters:
      name - The name of the named spec.
      spec - The JsSpec to be associated with the named spec.
      Returns:
      A named spec with the specified name.