Documentation
¶
Overview ¶
Index ¶
- Variables
- 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
- 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) 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
- type ConstValue
- 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 Flag
- type List
- type Rat
- type Schema
- type SchemaMap
- type SchemaType
Constants ¶
This section is empty.
Variables ¶
var ErrFailedToConvertToRat = errors.New("failed to convert string to *big.Rat")
ErrFailedToConvertToRat is returned when a string fails to convert to *big.Rat.
var ErrFailedToDecodeSegmentWithJSONPointer = errors.New("failed to decode segment")
ErrFailedToDecodeSegmentWithJSONPointer is returned when a segment cannot be decoded.
var ErrFailedToFetch = errors.New("failed to fetch from URL")
ErrFailedToFetch is returned when there is an error fetching from the URL.
var ErrFailedToReadData = errors.New("failed to read data from URL")
ErrFailedToReadData is returned when data cannot be read from the specified URL.
var ErrFailedToResolveDefinitions = errors.New("failed to resolve definitions in $defs")
ErrFailedToResolveDefinitions is returned when definitions in $defs cannot be resolved.
var ErrFailedToResolveGlobalReference = errors.New("failed to resolve global reference")
ErrFailedToResolveGlobalReference is returned when a global reference cannot be resolved.
var ErrFailedToResolveItems = errors.New("failed to resolve items")
ErrFailedToResolveItems is returned when items in an array schema cannot be resolved.
var ErrFailedToResolveReference = errors.New("failed to resolve reference")
ErrFailedToResolveReference is returned when a reference cannot be resolved.
var ErrIPv6AddressNotEnclosed = errors.New("ipv6 address is not enclosed in brackets")
ErrIPv6AddressNotEnclosed is returned when an IPv6 address is not enclosed in brackets.
var ErrInvalidHTTPStatusCode = errors.New("invalid HTTP status code returned")
ErrInvalidHTTPStatusCode is returned when an invalid HTTP status code is returned.
var ErrInvalidIPv6Address = errors.New("invalid ipv6 address")
ErrInvalidIPv6Address is returned when the IPv6 address is invalid.
var ErrInvalidJSONSchemaType = errors.New("invalid JSON schema type")
ErrInvalidJSONSchemaType is returned when the JSON schema type is invalid.
var ErrJSONUnmarshalError = errors.New("json unmarshal error")
ErrJSONUnmarshalError is returned when there is an error unmarshalling JSON.
var ErrNoLoaderRegistered = errors.New("no loader registered for scheme")
ErrNoLoaderRegistered is returned when no loader is registered for the specified scheme.
var ErrSegmentNotFoundForJSONPointer = errors.New("segment not found in the schema context")
ErrSegmentNotFoundForJSONPointer is returned when a segment is not found in the schema context.
var ErrUnsupportedTypeForRat = errors.New("unsupported type for conversion to *big.Rat")
ErrUnsupportedTypeForRat is returned when the type is unsupported for conversion to *big.Rat.
var ErrXMLUnmarshalError = errors.New("xml unmarshal error")
ErrXMLUnmarshalError is returned when there is an error unmarshalling XML.
var ErrYAMLUnmarshalError = errors.New("yaml unmarshal error")
ErrYAMLUnmarshalError is returned when there is an error unmarshalling YAML.
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 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
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 is a structure that manages schema compilation and validation.
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) 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.
type ConstValue ¶
type ConstValue struct {
Value interface{}
IsSet bool
}
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 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 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 (*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 ensures that Schema instances serialize correctly, particularly handling boolean schemas directly.
func (*Schema) UnmarshalJSON ¶
UnmarshalJSON customizes the unmarshaling of a Schema to properly initialize properties, particularly handling the 'const' keyword to manage null values and avoid recursion issues.
func (*Schema) Validate ¶
func (s *Schema) Validate(instance interface{}) *EvaluationResult
Evaluate checks if the given instance conforms to the schema.
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.
Source Files
¶
- additionalProperties.go
- allOf.go
- anyOf.go
- compiler.go
- conditional.go
- const.go
- contains.go
- content.go
- dependentRequired.go
- dependentSchemas.go
- enum.go
- errors.go
- exclusiveMaximum.go
- exclusiveMinimum.go
- format.go
- formats.go
- i18n.go
- id.go
- items.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
- type.go
- unevaluatedItems.go
- unevaluatedProperties.go
- uniqueItems.go
- utils.go
- validate.go