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) 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 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 {
// contains filtered or unexported fields
}
func NewEvaluationError ¶
func NewEvaluationError(keyword string, code string, message string, params ...map[string]interface{}) *EvaluationError
func (*EvaluationError) Error ¶
func (e *EvaluationError) Error() string
func (*EvaluationError) Localize ¶
func (e *EvaluationError) Localize(localizer *i18n.Localizer) 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) 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 ¶
type SchemaType []string
SchemaType holds a set of SchemaType values, accommodating complex schema definitions that permit multiple types.
func (SchemaType) MarshalJSON ¶
func (r SchemaType) MarshalJSON() ([]byte, error)
MarshalJSON customizes the JSON serialization of SchemaType.
func (*SchemaType) UnmarshalJSON ¶
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