Documentation
¶
Overview ¶
Credit to https://github.com/santhosh-tekuri/jsonschema
Example (ArraySchema) ¶
package main
import (
"fmt"
"github.com/kaptinlin/jsonschema"
)
func main() {
// Array schema with validation keywords
numbersSchema := jsonschema.Array(
jsonschema.Items(jsonschema.Number(
jsonschema.Min(0),
jsonschema.Max(100),
)),
jsonschema.MinItems(1),
jsonschema.MaxItems(10),
)
validData := []interface{}{10, 20, 30}
result := numbersSchema.Validate(validData)
fmt.Println("Numbers valid:", result.IsValid())
invalidData := []interface{}{-5, 150} // Out of range
result = numbersSchema.Validate(invalidData)
fmt.Println("Invalid numbers valid:", result.IsValid())
}
Output: Numbers valid: true Invalid numbers valid: false
Example (CompatibilityWithJSON) ¶
package main
import (
"fmt"
"log"
"github.com/kaptinlin/jsonschema"
)
func main() {
// New code construction approach
codeSchema := jsonschema.Object(
jsonschema.Prop("name", jsonschema.String()),
jsonschema.Prop("age", jsonschema.Integer()),
)
// Existing JSON compilation approach
compiler := jsonschema.NewCompiler()
jsonSchema, err := compiler.Compile([]byte(`{
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"}
}
}`))
if err != nil {
log.Fatal(err)
}
data := map[string]interface{}{
"name": "Bob",
"age": 25,
}
// Both approaches work identically
result1 := codeSchema.Validate(data)
result2 := jsonSchema.Validate(data)
fmt.Println("Code schema valid:", result1.IsValid())
fmt.Println("JSON schema valid:", result2.IsValid())
}
Output: Code schema valid: true JSON schema valid: true
Example (ComplexSchema) ¶
package main
import (
"fmt"
"github.com/kaptinlin/jsonschema"
)
func main() {
// Complex nested schema with validation keywords
userSchema := jsonschema.Object(
jsonschema.Prop("name", jsonschema.String(
jsonschema.MinLen(1),
jsonschema.MaxLen(100),
)),
jsonschema.Prop("age", jsonschema.Integer(
jsonschema.Min(0),
jsonschema.Max(150),
)),
jsonschema.Prop("email", jsonschema.Email()),
jsonschema.Prop("address", jsonschema.Object(
jsonschema.Prop("street", jsonschema.String(jsonschema.MinLen(1))),
jsonschema.Prop("city", jsonschema.String(jsonschema.MinLen(1))),
jsonschema.Prop("zip", jsonschema.String(jsonschema.Pattern(`^\d{5}$`))),
jsonschema.Required("street", "city"),
)),
jsonschema.Prop("tags", jsonschema.Array(
jsonschema.Items(jsonschema.String()),
jsonschema.MinItems(1),
jsonschema.UniqueItems(true),
)),
jsonschema.Required("name", "email"),
)
// Test data
userData := map[string]interface{}{
"name": "Alice",
"age": 30,
"email": "alice@example.com",
"address": map[string]interface{}{
"street": "123 Main St",
"city": "Anytown",
"zip": "12345",
},
"tags": []interface{}{"developer", "go"},
}
result := userSchema.Validate(userData)
if result.IsValid() {
fmt.Println("User data is valid")
} else {
for field, err := range result.Errors {
fmt.Printf("Error in %s: %s\n", field, err.Message)
}
}
}
Output: User data is valid
Example (ConditionalSchema) ¶
package main
import (
"fmt"
"github.com/kaptinlin/jsonschema"
)
func main() {
// Conditional schema using if/then/else keywords
conditionalSchema := jsonschema.If(
jsonschema.Object(
jsonschema.Prop("type", jsonschema.Const("premium")),
),
).Then(
jsonschema.Object(
jsonschema.Prop("features", jsonschema.Array(jsonschema.MinItems(5))),
),
).Else(
jsonschema.Object(
jsonschema.Prop("features", jsonschema.Array(jsonschema.MaxItems(3))),
),
)
// Basic plan object
basicPlan := map[string]interface{}{
"type": "basic",
"features": []interface{}{"feature1", "feature2"},
}
result := conditionalSchema.Validate(basicPlan)
fmt.Println("Basic plan valid:", result.IsValid())
}
Output: Basic plan valid: true
Example (ConvenienceFunctions) ¶
package main
import (
"fmt"
"github.com/kaptinlin/jsonschema"
)
func main() {
// Using convenience functions that apply format keywords
profileSchema := jsonschema.Object(
jsonschema.Prop("id", jsonschema.UUID()),
jsonschema.Prop("email", jsonschema.Email()),
jsonschema.Prop("website", jsonschema.URI()),
jsonschema.Prop("created", jsonschema.DateTime()),
jsonschema.Prop("score", jsonschema.PositiveInt()),
)
data := map[string]interface{}{
"id": "550e8400-e29b-41d4-a716-446655440000",
"email": "user@example.com",
"website": "https://example.com",
"created": "2023-01-01T00:00:00Z",
"score": 95,
}
result := profileSchema.Validate(data)
fmt.Println("Profile valid:", result.IsValid())
}
Output: Profile valid: true
Example (EnumAndConst) ¶
package main
import (
"fmt"
"github.com/kaptinlin/jsonschema"
)
func main() {
// Enum schema using enum keyword
statusSchema := jsonschema.Enum("active", "inactive", "pending")
result := statusSchema.Validate("active")
fmt.Println("Status valid:", result.IsValid())
// Const schema using const keyword
versionSchema := jsonschema.Const("1.0.0")
result = versionSchema.Validate("1.0.0")
fmt.Println("Version valid:", result.IsValid())
}
Output: Status valid: true Version valid: true
Example (Object) ¶
package main
import (
"fmt"
"github.com/kaptinlin/jsonschema"
)
func main() {
// Simple object schema using constructor API
schema := jsonschema.Object(
jsonschema.Prop("name", jsonschema.String(jsonschema.MinLen(1))),
jsonschema.Prop("age", jsonschema.Integer(jsonschema.Min(0))),
jsonschema.Required("name"),
)
// Valid data
data := map[string]interface{}{
"name": "Alice",
"age": 30,
}
result := schema.Validate(data)
fmt.Println("Valid:", result.IsValid())
}
Output: Valid: true
Example (OneOfAnyOf) ¶
package main
import (
"fmt"
"github.com/kaptinlin/jsonschema"
)
func main() {
// OneOf: exactly one schema must match
oneOfSchema := jsonschema.OneOf(
jsonschema.String(),
jsonschema.Integer(),
)
result := oneOfSchema.Validate("hello")
fmt.Println("OneOf string valid:", result.IsValid())
// AnyOf: at least one schema must match
anyOfSchema := jsonschema.AnyOf(
jsonschema.String(jsonschema.MinLen(5)),
jsonschema.Integer(jsonschema.Min(0)),
)
result = anyOfSchema.Validate("hi") // Matches integer rule (length < 5 but is string)
fmt.Println("AnyOf short string valid:", result.IsValid())
}
Output: OneOf string valid: true AnyOf short string valid: false
Example (SchemaRegistration) ¶
package main
import (
"fmt"
"log"
"github.com/kaptinlin/jsonschema"
)
func main() {
// Create compiler for schema registration
compiler := jsonschema.NewCompiler()
// Create User schema with Constructor API
userSchema := jsonschema.Object(
jsonschema.ID("https://example.com/schemas/user"),
jsonschema.Prop("id", jsonschema.UUID()),
jsonschema.Prop("name", jsonschema.String(jsonschema.MinLen(1))),
jsonschema.Prop("email", jsonschema.Email()),
jsonschema.Required("id", "name", "email"),
)
// Register the schema
compiler.SetSchema("https://example.com/schemas/user", userSchema)
// Create Profile schema that references User schema
profileJSON := `{
"type": "object",
"properties": {
"user": {"$ref": "https://example.com/schemas/user"},
"bio": {"type": "string"},
"website": {"type": "string", "format": "uri"}
},
"required": ["user"]
}`
profileSchema, err := compiler.Compile([]byte(profileJSON))
if err != nil {
log.Fatal(err)
}
// Test with valid data
profileData := map[string]interface{}{
"user": map[string]interface{}{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Alice Johnson",
"email": "alice@example.com",
},
"bio": "Software engineer",
"website": "https://alice.dev",
}
result := profileSchema.Validate(profileData)
fmt.Println("Profile with registered user schema valid:", result.IsValid())
}
Output: Profile with registered user schema valid: true
Index ¶
- Constants
- Variables
- func DefaultNowFunc(args ...any) (any, error)
- func FormatRat(r *Rat) string
- func GetI18n() (*i18n.I18n, error)
- func IsDate(v interface{}) bool
- func IsDateTime(v interface{}) bool
- func IsDuration(v interface{}) bool
- func IsEmail(v interface{}) bool
- func IsHostname(v interface{}) bool
- func IsIPV4(v interface{}) bool
- func IsIPV6(v interface{}) bool
- func IsJSONPointer(v interface{}) bool
- func IsPeriod(v interface{}) bool
- func IsRegex(v interface{}) bool
- func IsRelativeJSONPointer(v interface{}) bool
- func IsTime(v interface{}) bool
- func IsURI(v interface{}) bool
- func IsURIReference(v interface{}) bool
- func IsURITemplate(v interface{}) bool
- func IsUUID(v interface{}) bool
- func SetDefaultCompiler(c *Compiler)
- type Compiler
- func (c *Compiler) Compile(jsonSchema []byte, uris ...string) (*Schema, error)
- func (c *Compiler) GetSchema(ref string) (*Schema, error)
- func (c *Compiler) RegisterDecoder(encodingName string, decoderFunc func(string) ([]byte, error)) *Compiler
- func (c *Compiler) RegisterDefaultFunc(name string, fn DefaultFunc) *Compiler
- func (c *Compiler) RegisterLoader(scheme string, loaderFunc func(url string) (io.ReadCloser, error)) *Compiler
- func (c *Compiler) RegisterMediaType(mediaTypeName string, unmarshalFunc func([]byte) (interface{}, error)) *Compiler
- func (c *Compiler) SetAssertFormat(assert bool) *Compiler
- func (c *Compiler) SetDefaultBaseURI(baseURI string) *Compiler
- func (c *Compiler) SetSchema(uri string, schema *Schema) *Compiler
- func (c *Compiler) WithDecoderJSON(decoder func(data []byte, v interface{}) error) *Compiler
- func (c *Compiler) WithEncoderJSON(encoder func(v interface{}) ([]byte, error)) *Compiler
- type ConditionalSchema
- type ConstValue
- type DefaultFunc
- type DynamicScope
- type EvaluationError
- type EvaluationResult
- func (e *EvaluationResult) AddAnnotation(keyword string, annotation interface{}) *EvaluationResult
- func (e *EvaluationResult) AddDetail(detail *EvaluationResult) *EvaluationResult
- func (e *EvaluationResult) AddError(err *EvaluationError) *EvaluationResult
- func (e *EvaluationResult) CollectAnnotations() *EvaluationResult
- func (e *EvaluationResult) Error() string
- func (e *EvaluationResult) IsValid() bool
- func (e *EvaluationResult) SetEvaluationPath(evaluationPath string) *EvaluationResult
- func (e *EvaluationResult) SetInstanceLocation(instanceLocation string) *EvaluationResult
- func (e *EvaluationResult) SetInvalid() *EvaluationResult
- func (e *EvaluationResult) SetSchemaLocation(location string) *EvaluationResult
- func (e *EvaluationResult) ToFlag() *Flag
- func (e *EvaluationResult) ToList(includeHierarchy ...bool) *List
- func (e *EvaluationResult) ToLocalizeList(localizer *i18n.Localizer, includeHierarchy ...bool) *List
- type FieldCache
- type FieldInfo
- type Flag
- type FunctionCall
- type Keyword
- func AdditionalProps(allowed bool) Keyword
- func AdditionalPropsSchema(schema *Schema) Keyword
- func Anchor(anchor string) Keyword
- func Contains(schema *Schema) Keyword
- func ContentEncoding(encoding string) Keyword
- func ContentMediaType(mediaType string) Keyword
- func ContentSchema(schema *Schema) Keyword
- func Default(value interface{}) Keyword
- func Defs(defs map[string]*Schema) Keyword
- func DependentRequired(dependencies map[string][]string) Keyword
- func DependentSchemas(dependencies map[string]*Schema) Keyword
- func Deprecated(deprecated bool) Keyword
- func Description(desc string) Keyword
- func DynamicAnchor(anchor string) Keyword
- func Examples(examples ...interface{}) Keyword
- func ExclusiveMax(max float64) Keyword
- func ExclusiveMin(min float64) Keyword
- func Format(format string) Keyword
- func ID(id string) Keyword
- func Items(itemSchema *Schema) Keyword
- func Max(max float64) Keyword
- func MaxContains(max int) Keyword
- func MaxItems(max int) Keyword
- func MaxLen(max int) Keyword
- func MaxProps(max int) Keyword
- func Min(min float64) Keyword
- func MinContains(min int) Keyword
- func MinItems(min int) Keyword
- func MinLen(min int) Keyword
- func MinProps(min int) Keyword
- func MultipleOf(multiple float64) Keyword
- func Pattern(pattern string) Keyword
- func PatternProps(patterns map[string]*Schema) Keyword
- func PrefixItems(schemas ...*Schema) Keyword
- func PropertyNames(schema *Schema) Keyword
- func ReadOnly(readOnly bool) Keyword
- func Required(fields ...string) Keyword
- func SchemaURI(schemaURI string) Keyword
- func Title(title string) Keyword
- func UnevaluatedItems(schema *Schema) Keyword
- func UnevaluatedProps(schema *Schema) Keyword
- func UniqueItems(unique bool) Keyword
- func WriteOnly(writeOnly bool) Keyword
- type List
- type Property
- type Rat
- type Schema
- func AllOf(schemas ...*Schema) *Schema
- func Any(keywords ...Keyword) *Schema
- func AnyOf(schemas ...*Schema) *Schema
- func Array(keywords ...Keyword) *Schema
- func Boolean(keywords ...Keyword) *Schema
- func Const(value interface{}) *Schema
- func Date() *Schema
- func DateTime() *Schema
- func Duration() *Schema
- func Email() *Schema
- func Enum(values ...interface{}) *Schema
- func Hostname() *Schema
- func IPv4() *Schema
- func IPv6() *Schema
- func IRI() *Schema
- func IRIRef() *Schema
- func IdnEmail() *Schema
- func IdnHostname() *Schema
- func Integer(keywords ...Keyword) *Schema
- func JSONPointer() *Schema
- func NegativeInt() *Schema
- func NonNegativeInt() *Schema
- func NonPositiveInt() *Schema
- func Not(schema *Schema) *Schema
- func Null(keywords ...Keyword) *Schema
- func Number(keywords ...Keyword) *Schema
- func Object(items ...interface{}) *Schema
- func OneOf(schemas ...*Schema) *Schema
- func PositiveInt() *Schema
- func Ref(ref string) *Schema
- func Regex() *Schema
- func RelativeJSONPointer() *Schema
- func String(keywords ...Keyword) *Schema
- func Time() *Schema
- func URI() *Schema
- func URIRef() *Schema
- func URITemplate() *Schema
- func UUID() *Schema
- func (s *Schema) GetCompiler() *Compiler
- func (s *Schema) GetSchemaLocation(anchor string) string
- func (s *Schema) GetSchemaURI() string
- func (s *Schema) MarshalJSON() ([]byte, error)
- func (s *Schema) SetCompiler(compiler *Compiler) *Schema
- func (s *Schema) Unmarshal(dst, src interface{}) error
- func (s *Schema) UnmarshalJSON(data []byte) error
- func (s *Schema) Validate(instance interface{}) *EvaluationResult
- func (s *Schema) ValidateJSON(data []byte) *EvaluationResult
- func (s *Schema) ValidateMap(data map[string]interface{}) *EvaluationResult
- func (s *Schema) ValidateStruct(instance interface{}) *EvaluationResult
- type SchemaMap
- type SchemaType
- type UnmarshalError
Examples ¶
Constants ¶
const ( FormatEmail = "email" FormatDateTime = "date-time" FormatDate = "date" FormatTime = "time" FormatURI = "uri" FormatURIRef = "uri-reference" FormatUUID = "uuid" FormatHostname = "hostname" FormatIPv4 = "ipv4" FormatIPv6 = "ipv6" FormatRegex = "regex" FormatIdnEmail = "idn-email" FormatIdnHostname = "idn-hostname" FormatIRI = "iri" FormatIRIRef = "iri-reference" FormatURITemplate = "uri-template" FormatJSONPointer = "json-pointer" FormatRelativeJSONPointer = "relative-json-pointer" FormatDuration = "duration" )
Variables ¶
var ( // ErrNoLoaderRegistered is returned when no loader is registered for the specified scheme. ErrNoLoaderRegistered = errors.New("no loader registered for scheme") // ErrFailedToReadData is returned when data cannot be read from the specified URL. ErrFailedToReadData = errors.New("failed to read data from URL") // ErrJSONUnmarshalError is returned when there is an error unmarshalling JSON. ErrJSONUnmarshalError = errors.New("json unmarshal error") // ErrXMLUnmarshalError is returned when there is an error unmarshalling XML. ErrXMLUnmarshalError = errors.New("xml unmarshal error") // ErrYAMLUnmarshalError is returned when there is an error unmarshalling YAML. ErrYAMLUnmarshalError = errors.New("yaml unmarshal error") // ErrFailedToFetch is returned when there is an error fetching from the URL. ErrFailedToFetch = errors.New("failed to fetch from URL") // ErrInvalidHTTPStatusCode is returned when an invalid HTTP status code is returned. ErrInvalidHTTPStatusCode = errors.New("invalid HTTP status code returned") // ErrIPv6AddressNotEnclosed is returned when an IPv6 address is not enclosed in brackets. ErrIPv6AddressNotEnclosed = errors.New("ipv6 address is not enclosed in brackets") // ErrInvalidIPv6Address is returned when the IPv6 address is invalid. ErrInvalidIPv6Address = errors.New("invalid ipv6 address") // ErrUnsupportedTypeForRat is returned when the type is unsupported for conversion to *big.Rat. ErrUnsupportedTypeForRat = errors.New("unsupported type for conversion to *big.Rat") // ErrFailedToConvertToRat is returned when a string fails to convert to *big.Rat. ErrFailedToConvertToRat = errors.New("failed to convert string to *big.Rat") // ErrFailedToResolveGlobalReference is returned when a global reference cannot be resolved. ErrFailedToResolveGlobalReference = errors.New("failed to resolve global reference") // ErrFailedToDecodeSegmentWithJSONPointer is returned when a segment cannot be decoded. ErrFailedToDecodeSegmentWithJSONPointer = errors.New("failed to decode segment") // ErrSegmentNotFoundForJSONPointer is returned when a segment is not found in the schema context. ErrSegmentNotFoundForJSONPointer = errors.New("segment not found in the schema context") // ErrFailedToResolveReference is returned when a reference cannot be resolved. ErrFailedToResolveReference = errors.New("failed to resolve reference") // ErrFailedToResolveDefinitions is returned when definitions in $defs cannot be resolved. ErrFailedToResolveDefinitions = errors.New("failed to resolve definitions in $defs") // ErrFailedToResolveItems is returned when items in an array schema cannot be resolved. ErrFailedToResolveItems = errors.New("failed to resolve items") // ErrInvalidJSONSchemaType is returned when the JSON schema type is invalid. ErrInvalidJSONSchemaType = errors.New("invalid JSON schema type") // ErrNilConstValue is returned when trying to unmarshal into a nil ConstValue. ErrNilConstValue = errors.New("cannot unmarshal into nil ConstValue") )
var ( ErrTypeConversion = errors.New("type conversion failed") ErrTimeParseFailure = errors.New("failed to parse time string") ErrTimeTypeConversion = errors.New("cannot convert to time.Time") ErrNilDestination = errors.New("destination cannot be nil") ErrNotPointer = errors.New("destination must be a pointer") ErrNilPointer = errors.New("destination pointer cannot be nil") )
Static errors for better error handling
var Formats = map[string]func(interface{}) bool{ "date-time": IsDateTime, "date": IsDate, "time": IsTime, "duration": IsDuration, "period": IsPeriod, "hostname": IsHostname, "email": IsEmail, "ip-address": IsIPV4, "ipv4": IsIPV4, "ipv6": IsIPV6, "uri": IsURI, "iri": IsURI, "uri-reference": IsURIReference, "uriref": IsURIReference, "iri-reference": IsURIReference, "uri-template": IsURITemplate, "json-pointer": IsJSONPointer, "relative-json-pointer": IsRelativeJSONPointer, "uuid": IsUUID, "regex": IsRegex, "unknown": func(interface{}) bool { return true }, }
Formats is a registry of functions, which know how to validate a specific format.
New Formats can be registered by adding to this map. Key is format name, value is function that knows how to validate that format.
Functions ¶
func DefaultNowFunc ¶ added in v0.4.1
DefaultNowFunc generates current timestamp in various formats This function must be manually registered by developers
func IsDate ¶
func IsDate(v interface{}) bool
IsDate tells whether given string is a valid full-date production as defined by RFC 3339, section 5.6.
see https://datatracker.ietf.org/doc/html/rfc3339#section-5.6, for details
func IsDateTime ¶
func IsDateTime(v interface{}) bool
IsDateTime tells whether given string is a valid date representation as defined by RFC 3339, section 5.6.
see https://datatracker.ietf.org/doc/html/rfc3339#section-5.6, for details
func IsDuration ¶
func IsDuration(v interface{}) bool
IsDuration tells whether given string is a valid duration format from the ISO 8601 ABNF as given in Appendix A of RFC 3339.
see https://datatracker.ietf.org/doc/html/rfc3339#appendix-A, for details
func IsEmail ¶
func IsEmail(v interface{}) bool
IsEmail tells whether given string is a valid Internet email address as defined by RFC 5322, section 3.4.1.
See https://en.wikipedia.org/wiki/Email_address, for details.
func IsHostname ¶
func IsHostname(v interface{}) bool
IsHostname tells whether given string is a valid representation for an Internet host name, as defined by RFC 1034 section 3.1 and RFC 1123 section 2.1.
See https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names, for details.
func IsIPV4 ¶
func IsIPV4(v interface{}) bool
IsIPV4 tells whether given string is a valid representation of an IPv4 address according to the "dotted-quad" ABNF syntax as defined in RFC 2673, section 3.2.
func IsIPV6 ¶
func IsIPV6(v interface{}) bool
IsIPV6 tells whether given string is a valid representation of an IPv6 address as defined in RFC 2373, section 2.2.
func IsJSONPointer ¶
func IsJSONPointer(v interface{}) bool
IsJSONPointer tells whether given string is a valid JSON Pointer.
Note: It returns false for JSON Pointer URI fragments.
func IsPeriod ¶
func IsPeriod(v interface{}) bool
IsPeriod tells whether given string is a valid period format from the ISO 8601 ABNF as given in Appendix A of RFC 3339.
see https://datatracker.ietf.org/doc/html/rfc3339#appendix-A, for details
func IsRegex ¶
func IsRegex(v interface{}) bool
IsRegex tells whether given string is a valid regex pattern
func IsRelativeJSONPointer ¶
func IsRelativeJSONPointer(v interface{}) bool
IsRelativeJSONPointer tells whether given string is a valid Relative JSON Pointer.
see https://tools.ietf.org/html/draft-handrews-relative-json-pointer-01#section-3
func IsTime ¶
func IsTime(v interface{}) bool
IsTime tells whether given string is a valid full-time production as defined by RFC 3339, section 5.6.
see https://datatracker.ietf.org/doc/html/rfc3339#section-5.6, for details
func IsURI ¶
func IsURI(v interface{}) bool
IsURI tells whether given string is valid URI, according to RFC 3986.
func IsURIReference ¶
func IsURIReference(v interface{}) bool
IsURIReference tells whether given string is a valid URI Reference (either a URI or a relative-reference), according to RFC 3986.
func IsURITemplate ¶
func IsURITemplate(v interface{}) bool
IsURITemplate tells whether given string is a valid URI Template according to RFC6570.
Current implementation does minimal validation.
func IsUUID ¶
func IsUUID(v interface{}) bool
IsUUID tells whether given string is a valid uuid format as specified in RFC4122.
see https://datatracker.ietf.org/doc/html/rfc4122#page-4, for details
func SetDefaultCompiler ¶ added in v0.4.1
func SetDefaultCompiler(c *Compiler)
SetDefaultCompiler allows setting a custom compiler for the constructor API
Types ¶
type Compiler ¶
type Compiler struct {
Decoders map[string]func(string) ([]byte, error) // Decoders for various encoding formats.
MediaTypes map[string]func([]byte) (interface{}, error) // Media type handlers for unmarshalling data.
Loaders map[string]func(url string) (io.ReadCloser, error) // Functions to load schemas from URLs.
DefaultBaseURI string // Base URI used to resolve relative references.
AssertFormat bool // Flag to enforce format validation.
// contains filtered or unexported fields
}
Compiler represents a JSON Schema compiler that manages schema compilation and caching.
func GetDefaultCompiler ¶ added in v0.4.1
func GetDefaultCompiler() *Compiler
GetDefaultCompiler returns the current default compiler
func NewCompiler ¶
func NewCompiler() *Compiler
NewCompiler creates a new Compiler instance and initializes it with default settings.
func (*Compiler) Compile ¶
Compile compiles a JSON schema and caches it. If an URI is provided, it uses that as the key; otherwise, it generates a hash.
func (*Compiler) GetSchema ¶
GetSchema retrieves a schema by reference. If the schema is not found in the cache and the ref is a URL, it tries to resolve it.
func (*Compiler) RegisterDecoder ¶
func (c *Compiler) RegisterDecoder(encodingName string, decoderFunc func(string) ([]byte, error)) *Compiler
RegisterDecoder adds a new decoder function for a specific encoding.
func (*Compiler) RegisterDefaultFunc ¶ added in v0.4.1
func (c *Compiler) RegisterDefaultFunc(name string, fn DefaultFunc) *Compiler
RegisterDefaultFunc registers a function for dynamic default value generation
func (*Compiler) RegisterLoader ¶
func (c *Compiler) RegisterLoader(scheme string, loaderFunc func(url string) (io.ReadCloser, error)) *Compiler
RegisterLoader adds a new loader function for a specific URI scheme.
func (*Compiler) RegisterMediaType ¶
func (c *Compiler) RegisterMediaType(mediaTypeName string, unmarshalFunc func([]byte) (interface{}, error)) *Compiler
RegisterMediaType adds a new unmarshal function for a specific media type.
func (*Compiler) SetAssertFormat ¶
SetAssertFormat enables or disables format assertion.
func (*Compiler) SetDefaultBaseURI ¶
SetDefaultBaseURI sets the default base URL for resolving relative references.
func (*Compiler) WithDecoderJSON ¶ added in v0.2.3
WithDecoderJSON configures custom JSON decoder implementation
type ConditionalSchema ¶ added in v0.4.0
type ConditionalSchema struct {
// contains filtered or unexported fields
}
ConditionalSchema represents a conditional schema for if/then/else logic
func If ¶ added in v0.4.0
func If(condition *Schema) *ConditionalSchema
If creates a conditional Schema with if/then/else keywords
func (*ConditionalSchema) Else ¶ added in v0.4.0
func (cs *ConditionalSchema) Else(otherwise *Schema) *Schema
Else sets the else clause of a conditional schema
func (*ConditionalSchema) Then ¶ added in v0.4.0
func (cs *ConditionalSchema) Then(then *Schema) *ConditionalSchema
Then sets the then clause of a conditional schema
func (*ConditionalSchema) ToSchema ¶ added in v0.4.0
func (cs *ConditionalSchema) ToSchema() *Schema
ToSchema converts a conditional schema to a regular schema
type ConstValue ¶
type ConstValue struct {
Value interface{}
IsSet bool
}
ConstValue represents a constant value in a JSON Schema.
func (ConstValue) MarshalJSON ¶
func (cv ConstValue) MarshalJSON() ([]byte, error)
MarshalJSON handles marshaling the ConstValue type back to JSON.
func (*ConstValue) UnmarshalJSON ¶
func (cv *ConstValue) UnmarshalJSON(data []byte) error
UnmarshalJSON handles unmarshaling a JSON value into the ConstValue type.
type DefaultFunc ¶ added in v0.4.1
DefaultFunc represents a function that can generate dynamic default values
type DynamicScope ¶
type DynamicScope struct {
// contains filtered or unexported fields
}
DynamicScope struct defines a stack specifically for handling Schema types
func NewDynamicScope ¶
func NewDynamicScope() *DynamicScope
NewDynamicScope creates and returns a new empty DynamicScope
func (*DynamicScope) IsEmpty ¶
func (ds *DynamicScope) IsEmpty() bool
IsEmpty checks if the dynamic scope is empty
func (*DynamicScope) LookupDynamicAnchor ¶
func (ds *DynamicScope) LookupDynamicAnchor(anchor string) *Schema
LookupDynamicAnchor searches for a dynamic anchor in the dynamic scope
func (*DynamicScope) Peek ¶
func (ds *DynamicScope) Peek() *Schema
Peek returns the top Schema without removing it
func (*DynamicScope) Pop ¶
func (ds *DynamicScope) Pop() *Schema
Pop removes and returns the top Schema from the dynamic scope
func (*DynamicScope) Push ¶
func (ds *DynamicScope) Push(schema *Schema)
Push adds a Schema to the dynamic scope
func (*DynamicScope) Size ¶
func (ds *DynamicScope) Size() int
Size returns the number of Schemas in the dynamic scope
type EvaluationError ¶
type EvaluationError struct {
Keyword string `json:"keyword"`
Code string `json:"code"`
Message string `json:"message"`
Params map[string]interface{} `json:"params"`
}
func NewEvaluationError ¶
func NewEvaluationError(keyword string, code string, message string, params ...map[string]interface{}) *EvaluationError
func (*EvaluationError) Error ¶
func (e *EvaluationError) Error() string
type EvaluationResult ¶
type EvaluationResult struct {
Valid bool `json:"valid"`
EvaluationPath string `json:"evaluationPath"`
SchemaLocation string `json:"schemaLocation"`
InstanceLocation string `json:"instanceLocation"`
Annotations map[string]interface{} `json:"annotations,omitempty"`
Errors map[string]*EvaluationError `json:"errors,omitempty"` // Store error messages here
Details []*EvaluationResult `json:"details,omitempty"`
// contains filtered or unexported fields
}
func NewEvaluationResult ¶
func NewEvaluationResult(schema *Schema) *EvaluationResult
func (*EvaluationResult) AddAnnotation ¶
func (e *EvaluationResult) AddAnnotation(keyword string, annotation interface{}) *EvaluationResult
func (*EvaluationResult) AddDetail ¶
func (e *EvaluationResult) AddDetail(detail *EvaluationResult) *EvaluationResult
func (*EvaluationResult) AddError ¶
func (e *EvaluationResult) AddError(err *EvaluationError) *EvaluationResult
func (*EvaluationResult) CollectAnnotations ¶
func (e *EvaluationResult) CollectAnnotations() *EvaluationResult
func (*EvaluationResult) Error ¶ added in v0.2.2
func (e *EvaluationResult) Error() string
func (*EvaluationResult) IsValid ¶
func (e *EvaluationResult) IsValid() bool
func (*EvaluationResult) SetEvaluationPath ¶
func (e *EvaluationResult) SetEvaluationPath(evaluationPath string) *EvaluationResult
func (*EvaluationResult) SetInstanceLocation ¶
func (e *EvaluationResult) SetInstanceLocation(instanceLocation string) *EvaluationResult
func (*EvaluationResult) SetInvalid ¶
func (e *EvaluationResult) SetInvalid() *EvaluationResult
func (*EvaluationResult) SetSchemaLocation ¶
func (e *EvaluationResult) SetSchemaLocation(location string) *EvaluationResult
func (*EvaluationResult) ToFlag ¶
func (e *EvaluationResult) ToFlag() *Flag
Converts EvaluationResult to a simple Flag struct
func (*EvaluationResult) ToList ¶
func (e *EvaluationResult) ToList(includeHierarchy ...bool) *List
ToList converts the evaluation results into a list format with optional hierarchy includeHierarchy is variadic; if not provided, it defaults to true
func (*EvaluationResult) ToLocalizeList ¶
func (e *EvaluationResult) ToLocalizeList(localizer *i18n.Localizer, includeHierarchy ...bool) *List
ToLocalizeList converts the evaluation results into a list format with optional hierarchy with localization includeHierarchy is variadic; if not provided, it defaults to true
type FieldCache ¶ added in v0.2.5
FieldCache stores parsed field information for a struct type
type FieldInfo ¶ added in v0.2.5
type FieldInfo struct {
Index int // Field index in the struct
JSONName string // JSON field name (after processing tags)
Omitempty bool // Whether the field has omitempty tag
Type reflect.Type // Field type
}
FieldInfo contains metadata for a struct field
type FunctionCall ¶ added in v0.4.1
FunctionCall represents a parsed function call with name and arguments
type Keyword ¶ added in v0.4.0
type Keyword func(*Schema)
Keyword represents a schema keyword that can be applied to any schema
func AdditionalProps ¶ added in v0.4.0
AdditionalProps sets the additionalProperties keyword
func AdditionalPropsSchema ¶ added in v0.4.0
AdditionalPropsSchema sets the additionalProperties keyword with a schema
func ContentEncoding ¶ added in v0.4.0
ContentEncoding sets the contentEncoding keyword
func ContentMediaType ¶ added in v0.4.0
ContentMediaType sets the contentMediaType keyword
func ContentSchema ¶ added in v0.4.0
ContentSchema sets the contentSchema keyword
func Default ¶ added in v0.4.0
func Default(value interface{}) Keyword
Default sets the default keyword
func DependentRequired ¶ added in v0.4.0
DependentRequired sets the dependentRequired keyword
func DependentSchemas ¶ added in v0.4.0
DependentSchemas sets the dependentSchemas keyword
func Deprecated ¶ added in v0.4.0
Deprecated sets the deprecated keyword
func Description ¶ added in v0.4.0
Description sets the description keyword
func DynamicAnchor ¶ added in v0.4.0
DynamicAnchor sets the $dynamicAnchor keyword
func Examples ¶ added in v0.4.0
func Examples(examples ...interface{}) Keyword
Examples sets the examples keyword
func ExclusiveMax ¶ added in v0.4.0
ExclusiveMax sets the exclusiveMaximum keyword
func ExclusiveMin ¶ added in v0.4.0
ExclusiveMin sets the exclusiveMinimum keyword
func MaxContains ¶ added in v0.4.0
MaxContains sets the maxContains keyword
func MinContains ¶ added in v0.4.0
MinContains sets the minContains keyword
func MultipleOf ¶ added in v0.4.0
MultipleOf sets the multipleOf keyword
func PatternProps ¶ added in v0.4.0
PatternProps sets the patternProperties keyword
func PrefixItems ¶ added in v0.4.0
PrefixItems sets the prefixItems keyword
func PropertyNames ¶ added in v0.4.0
PropertyNames sets the propertyNames keyword
func UnevaluatedItems ¶ added in v0.4.0
UnevaluatedItems sets the unevaluatedItems keyword
func UnevaluatedProps ¶ added in v0.4.0
UnevaluatedProps sets the unevaluatedProperties keyword
func UniqueItems ¶ added in v0.4.0
UniqueItems sets the uniqueItems keyword
type List ¶
type List struct {
Valid bool `json:"valid"`
EvaluationPath string `json:"evaluationPath"`
SchemaLocation string `json:"schemaLocation"`
InstanceLocation string `json:"instanceLocation"`
Annotations map[string]interface{} `json:"annotations,omitempty"`
Errors map[string]string `json:"errors,omitempty"`
Details []List `json:"details,omitempty"`
}
type Rat ¶
Rat wraps a big.Rat to enable custom JSON marshaling and unmarshaling.
func NewRat ¶
func NewRat(value interface{}) *Rat
NewRat creates a new Rat instance from a given value.
func (*Rat) MarshalJSON ¶
MarshalJSON implements the json.Marshaler interface for Rat.
func (*Rat) UnmarshalJSON ¶
UnmarshalJSON implements the json.Unmarshaler interface for Rat.
type Schema ¶
type Schema struct {
ID string `json:"$id,omitempty"` // Public identifier for the schema.
Schema string `json:"$schema,omitempty"` // URI indicating the specification the schema conforms to.
Format *string `json:"format,omitempty"` // Format hint for string data, e.g., "email" or "date-time".
// Schema reference keywords, see https://json-schema.org/draft/2020-12/json-schema-core#ref
Ref string `json:"$ref,omitempty"` // Reference to another schema.
DynamicRef string `json:"$dynamicRef,omitempty"` // Reference to another schema that can be dynamically resolved.
Anchor string `json:"$anchor,omitempty"` // Anchor for resolving relative JSON Pointers.
DynamicAnchor string `json:"$dynamicAnchor,omitempty"` // Anchor for dynamic resolution
Defs map[string]*Schema `json:"$defs,omitempty"` // An object containing schema definitions.
ResolvedRef *Schema `json:"-"` // Resolved schema for $ref
ResolvedDynamicRef *Schema `json:"-"` // Resolved schema for $dynamicRef
// Boolean JSON Schemas, see https://json-schema.org/draft/2020-12/json-schema-core#name-boolean-json-schemas
Boolean *bool `json:"-"` // Boolean schema, used for quick validation.
// Applying subschemas with logical keywords, see https://json-schema.org/draft/2020-12/json-schema-core#name-keywords-for-applying-subsch
AllOf []*Schema `json:"allOf,omitempty"` // Array of schemas for validating the instance against all of them.
AnyOf []*Schema `json:"anyOf,omitempty"` // Array of schemas for validating the instance against any of them.
OneOf []*Schema `json:"oneOf,omitempty"` // Array of schemas for validating the instance against exactly one of them.
Not *Schema `json:"not,omitempty"` // Schema for validating the instance against the negation of it.
// Applying subschemas conditionally, see https://json-schema.org/draft/2020-12/json-schema-core#name-keywords-for-applying-subsche
If *Schema `json:"if,omitempty"` // Schema to be evaluated as a condition
Then *Schema `json:"then,omitempty"` // Schema to be evaluated if 'if' is successful
Else *Schema `json:"else,omitempty"` // Schema to be evaluated if 'if' is not successful
DependentSchemas map[string]*Schema `json:"dependentSchemas,omitempty"` // Dependent schemas based on property presence
// Applying subschemas to array keywords, see https://json-schema.org/draft/2020-12/json-schema-core#name-keywords-for-applying-subschem
PrefixItems []*Schema `json:"prefixItems,omitempty"` // Array of schemas for validating the array items' prefix.
Items *Schema `json:"items,omitempty"` // Schema for items in an array.
Contains *Schema `json:"contains,omitempty"` // Schema for validating items in the array.
// Applying subschemas to objects keywords, see https://json-schema.org/draft/2020-12/json-schema-core#name-keywords-for-applying-subschemas
Properties *SchemaMap `json:"properties,omitempty"` // Definitions of properties for object types.
PatternProperties *SchemaMap `json:"patternProperties,omitempty"` // Definitions of properties for object types matched by specific patterns.
AdditionalProperties *Schema `json:"additionalProperties,omitempty"` // Can be a boolean or a schema, controls additional properties handling.
PropertyNames *Schema `json:"propertyNames,omitempty"` // Can be a boolean or a schema, controls property names validation.
// Any validation keywords, see https://json-schema.org/draft/2020-12/json-schema-validation#section-6.1
Type SchemaType `json:"type,omitempty"` // Can be a single type or an array of types.
Enum []interface{} `json:"enum,omitempty"` // Enumerated values for the property.
Const *ConstValue `json:"const,omitempty"` // Constant value for the property.
// Numeric validation keywords, see https://json-schema.org/draft/2020-12/json-schema-validation#section-6.2
MultipleOf *Rat `json:"multipleOf,omitempty"` // Number must be a multiple of this value, strictly greater than 0.
Maximum *Rat `json:"maximum,omitempty"` // Maximum value of the number.
ExclusiveMaximum *Rat `json:"exclusiveMaximum,omitempty"` // Number must be less than this value.
Minimum *Rat `json:"minimum,omitempty"` // Minimum value of the number.
ExclusiveMinimum *Rat `json:"exclusiveMinimum,omitempty"` // Number must be greater than this value.
// String validation keywords, see https://json-schema.org/draft/2020-12/json-schema-validation#section-6.3
MaxLength *float64 `json:"maxLength,omitempty"` // Maximum length of a string.
MinLength *float64 `json:"minLength,omitempty"` // Minimum length of a string.
Pattern *string `json:"pattern,omitempty"` // Regular expression pattern to match the string against.
// Array validation keywords, see https://json-schema.org/draft/2020-12/json-schema-validation#section-6.4
MaxItems *float64 `json:"maxItems,omitempty"` // Maximum number of items in an array.
MinItems *float64 `json:"minItems,omitempty"` // Minimum number of items in an array.
UniqueItems *bool `json:"uniqueItems,omitempty"` // Whether the items in the array must be unique.
MaxContains *float64 `json:"maxContains,omitempty"` // Maximum number of items in the array that can match the contains schema.
MinContains *float64 `json:"minContains,omitempty"` // Minimum number of items in the array that must match the contains schema.
// https://json-schema.org/draft/2020-12/json-schema-core#name-unevaluateditems
UnevaluatedItems *Schema `json:"unevaluatedItems,omitempty"` // Schema for unevaluated items in an array.
// Object validation keywords, see https://json-schema.org/draft/2020-12/json-schema-validation#section-6.5
MaxProperties *float64 `json:"maxProperties,omitempty"` // Maximum number of properties in an object.
MinProperties *float64 `json:"minProperties,omitempty"` // Minimum number of properties in an object.
Required []string `json:"required,omitempty"` // List of required property names for object types.
DependentRequired map[string][]string `json:"dependentRequired,omitempty"` // Properties required when another property is present.
// https://json-schema.org/draft/2020-12/json-schema-core#name-unevaluatedproperties
UnevaluatedProperties *Schema `json:"unevaluatedProperties,omitempty"` // Schema for unevaluated properties in an object.
// Content validation keywords, see https://json-schema.org/draft/2020-12/json-schema-validation#name-a-vocabulary-for-the-conten
ContentEncoding *string `json:"contentEncoding,omitempty"` // Encoding format of the content.
ContentMediaType *string `json:"contentMediaType,omitempty"` // Media type of the content.
ContentSchema *Schema `json:"contentSchema,omitempty"` // Schema for validating the content.
// Meta-data for schema and instance description, see https://json-schema.org/draft/2020-12/json-schema-validation#name-a-vocabulary-for-basic-meta
Title *string `json:"title,omitempty"` // A short summary of the schema.
Description *string `json:"description,omitempty"` // A detailed description of the purpose of the schema.
Default interface{} `json:"default,omitempty"` // Default value of the instance.
Deprecated *bool `json:"deprecated,omitempty"` // Indicates that the schema is deprecated.
ReadOnly *bool `json:"readOnly,omitempty"` // Indicates that the property is read-only.
WriteOnly *bool `json:"writeOnly,omitempty"` // Indicates that the property is write-only.
Examples []interface{} `json:"examples,omitempty"` // Examples of the instance data that validates against this schema.
// contains filtered or unexported fields
}
Schema represents a JSON Schema as per the 2020-12 draft, containing all necessary metadata and validation properties defined by the specification.
func DateTime ¶ added in v0.4.0
func DateTime() *Schema
DateTime creates a date-time format string schema
func Duration ¶ added in v0.4.0
func Duration() *Schema
Duration creates a duration format string schema
func Hostname ¶ added in v0.4.0
func Hostname() *Schema
Hostname creates a hostname format string schema
func IRIRef ¶ added in v0.4.0
func IRIRef() *Schema
IRIRef creates an IRI reference format string schema
func IdnEmail ¶ added in v0.4.0
func IdnEmail() *Schema
IdnEmail creates an internationalized email format string schema
func IdnHostname ¶ added in v0.4.0
func IdnHostname() *Schema
IdnHostname creates an internationalized hostname format string schema
func JSONPointer ¶ added in v0.4.0
func JSONPointer() *Schema
JSONPointer creates a JSON pointer format string schema
func NegativeInt ¶ added in v0.4.0
func NegativeInt() *Schema
NegativeInt creates a negative integer schema
func NonNegativeInt ¶ added in v0.4.0
func NonNegativeInt() *Schema
NonNegativeInt creates a non-negative integer schema
func NonPositiveInt ¶ added in v0.4.0
func NonPositiveInt() *Schema
NonPositiveInt creates a non-positive integer schema
func Object ¶ added in v0.4.0
func Object(items ...interface{}) *Schema
Object creates an object Schema with properties and keywords
func PositiveInt ¶ added in v0.4.0
func PositiveInt() *Schema
PositiveInt creates a positive integer schema
func RelativeJSONPointer ¶ added in v0.4.0
func RelativeJSONPointer() *Schema
RelativeJSONPointer creates a relative JSON pointer format string schema
func URIRef ¶ added in v0.4.0
func URIRef() *Schema
URIRef creates a URI reference format string schema
func URITemplate ¶ added in v0.4.0
func URITemplate() *Schema
URITemplate creates a URI template format string schema
func (*Schema) GetCompiler ¶ added in v0.4.1
GetCompiler gets the effective Compiler for the Schema Lookup order: current Schema -> parent Schema -> defaultCompiler
func (*Schema) GetSchemaLocation ¶
func (*Schema) GetSchemaURI ¶
GetSchemaURI returns the resolved URI for the schema, or an empty string if no URI is defined.
func (*Schema) MarshalJSON ¶
MarshalJSON implements json.Marshaler
func (*Schema) SetCompiler ¶ added in v0.4.1
SetCompiler sets a custom Compiler for the Schema and returns the Schema itself to support method chaining
func (*Schema) Unmarshal ¶ added in v0.2.6
Unmarshal unmarshals data into dst, applying default values from the schema. This method does NOT perform validation - use Validate() separately for validation.
Supported source types:
- []byte (JSON data - automatically parsed if valid JSON)
- map[string]interface{} (parsed JSON object)
- Go structs and other types
Supported destination types:
- *struct (Go struct pointer)
- *map[string]interface{} (map pointer)
- other pointer types (via JSON marshaling)
Example usage:
result := schema.Validate(data)
if result.IsValid() {
err := schema.Unmarshal(&user, data)
if err != nil {
log.Fatal(err)
}
} else {
// Handle validation errors
for field, err := range result.Errors {
log.Printf("%s: %s", field, err.Message)
}
}
To use JSON strings, convert them to []byte first:
schema.Unmarshal(&target, []byte(jsonString))
func (*Schema) UnmarshalJSON ¶
UnmarshalJSON handles unmarshaling JSON data into the Schema type.
func (*Schema) Validate ¶
func (s *Schema) Validate(instance interface{}) *EvaluationResult
Validate checks if the given instance conforms to the schema. This method automatically detects the input type and delegates to the appropriate validation method.
func (*Schema) ValidateJSON ¶ added in v0.3.0
func (s *Schema) ValidateJSON(data []byte) *EvaluationResult
ValidateJSON validates JSON data provided as []byte. The input is guaranteed to be treated as JSON data and parsed accordingly.
func (*Schema) ValidateMap ¶ added in v0.3.0
func (s *Schema) ValidateMap(data map[string]interface{}) *EvaluationResult
ValidateMap validates map[string]interface{} data directly. This method provides optimal performance for pre-parsed JSON data.
func (*Schema) ValidateStruct ¶ added in v0.3.0
func (s *Schema) ValidateStruct(instance interface{}) *EvaluationResult
ValidateStruct validates Go struct data directly using reflection. This method uses cached reflection data for optimal performance.
type SchemaMap ¶
SchemaMap represents a map of string keys to *Schema values, used primarily for properties and patternProperties.
func (SchemaMap) MarshalJSON ¶
MarshalJSON ensures that SchemaMap serializes properly as a JSON object.
func (*SchemaMap) UnmarshalJSON ¶
UnmarshalJSON ensures that JSON objects are correctly parsed into SchemaMap, supporting the detailed structure required for nested schema definitions.
type SchemaType ¶ added in v0.2.0
type SchemaType []string
SchemaType holds a set of SchemaType values, accommodating complex schema definitions that permit multiple types.
func (SchemaType) MarshalJSON ¶ added in v0.2.0
func (r SchemaType) MarshalJSON() ([]byte, error)
MarshalJSON customizes the JSON serialization of SchemaType.
func (*SchemaType) UnmarshalJSON ¶ added in v0.2.0
func (r *SchemaType) UnmarshalJSON(data []byte) error
UnmarshalJSON customizes the JSON deserialization into SchemaType.
type UnmarshalError ¶ added in v0.2.6
UnmarshalError represents an error that occurred during unmarshaling
func (*UnmarshalError) Error ¶ added in v0.2.6
func (e *UnmarshalError) Error() string
func (*UnmarshalError) Unwrap ¶ added in v0.2.6
func (e *UnmarshalError) Unwrap() error
Source Files
¶
- additionalProperties.go
- allOf.go
- anyOf.go
- compiler.go
- conditional.go
- const.go
- constructor.go
- contains.go
- content.go
- default_funcs.go
- dependentRequired.go
- dependentSchemas.go
- enum.go
- errors.go
- exclusiveMaximum.go
- exclusiveMinimum.go
- format.go
- formats.go
- i18n.go
- id.go
- items.go
- keywords.go
- maxItems.go
- maxProperties.go
- maximum.go
- maxlength.go
- minItems.go
- minProperties.go
- minimum.go
- minlength.go
- multipleOf.go
- not.go
- oneOf.go
- pattern.go
- patternProperties.go
- prefixItems.go
- properties.go
- propertyNames.go
- rat.go
- ref.go
- required.go
- result.go
- schema.go
- struct_validation.go
- type.go
- unevaluatedItems.go
- unevaluatedProperties.go
- uniqueItems.go
- unmarshal.go
- utils.go
- validate.go
Directories
¶
| Path | Synopsis |
|---|---|
|
examples
|
|
|
basic
command
|
|
|
constructor
command
|
|
|
error-handling
command
|
|
|
i18n
command
|
|
|
multiple-input-types
command
|
|
|
struct-validation
command
|
|
|
unmarshaling
command
|
|