gojsonschema: github.com/juju/gojsonschema Index | Files

package gojsonschema

import "github.com/juju/gojsonschema"


Package Files

defaults.go internalLog.go jsonContext.go jsonLoader.go locales.go result.go schema.go schemaPool.go schemaReferencePool.go schemaType.go subSchema.go types.go utils.go validation.go


const (
    STRING_NUMBER                     = "number"
    STRING_ARRAY_OF_STRINGS           = "array of strings"
    STRING_ARRAY_OF_SCHEMAS           = "array of schemas"
    STRING_SCHEMA                     = "schema"
    STRING_SCHEMA_OR_ARRAY_OF_STRINGS = "schema or array of strings"
    STRING_PROPERTIES                 = "properties"
    STRING_DEPENDENCY                 = "dependency"
    STRING_PROPERTY                   = "property"

    STRING_CONTEXT_ROOT         = "(root)"

    STRING_UNDEFINED = "undefined"

    ERROR_MESSAGE_X_IS_NOT_A_VALID_TYPE = `%s is not a valid type`
    ERROR_MESSAGE_X_TYPE_IS_DUPLICATED  = `%s type is duplicated`

    ERROR_MESSAGE_X_MUST_BE_OF_TYPE_Y = `%s must be of type %s`

    ERROR_MESSAGE_X_MUST_BE_A_Y  = `%s must be of a %s`
    ERROR_MESSAGE_X_MUST_BE_AN_Y = `%s must be of an %s`

    ERROR_MESSAGE_X_IS_MISSING_AND_REQUIRED  = `%s is missing and required`
    ERROR_MESSAGE_MUST_BE_OF_TYPE_X          = `must be of type %s`
    ERROR_MESSAGE_X_ITEMS_MUST_BE_UNIQUE     = `%s items must be unique`
    ERROR_MESSAGE_X_ITEMS_MUST_BE_TYPE_Y     = `%s items must be %s`
    ERROR_MESSAGE_DOES_NOT_MATCH_PATTERN     = `does not match pattern '%s'`
    ERROR_MESSAGE_MUST_MATCH_ONE_ENUM_VALUES = `must match one of the enum values [%s]`

    ERROR_MESSAGE_STRING_LENGTH_MUST_BE_GREATER_OR_EQUAL = `string length must be greater or equal to %d`
    ERROR_MESSAGE_STRING_LENGTH_MUST_BE_LOWER_OR_EQUAL   = `string length must be lower or equal to %d`

    ERROR_MESSAGE_NUMBER_MUST_BE_LOWER_OR_EQUAL   = `must be lower than or equal to %s`
    ERROR_MESSAGE_NUMBER_MUST_BE_LOWER            = `must be lower than %s`
    ERROR_MESSAGE_NUMBER_MUST_BE_GREATER_OR_EQUAL = `must be greater than or equal to %s`
    ERROR_MESSAGE_NUMBER_MUST_BE_GREATER          = `must be greater than %s`

    ERROR_MESSAGE_NUMBER_MUST_VALIDATE_ALLOF = `must validate all the schemas (allOf)`
    ERROR_MESSAGE_NUMBER_MUST_VALIDATE_ONEOF = `must validate one and only one schema (oneOf)`
    ERROR_MESSAGE_NUMBER_MUST_VALIDATE_ANYOF = `must validate at least one schema (anyOf)`
    ERROR_MESSAGE_NUMBER_MUST_VALIDATE_NOT   = `must not validate the schema (not)`

    ERROR_MESSAGE_ARRAY_MIN_ITEMS = `array must have at least %d items`
    ERROR_MESSAGE_ARRAY_MAX_ITEMS = `array must have at the most %d items`

    ERROR_MESSAGE_ARRAY_MIN_PROPERTIES = `must have at least %d properties`
    ERROR_MESSAGE_ARRAY_MAX_PROPERTIES = `must have at the most %d properties`

    ERROR_MESSAGE_HAS_DEPENDENCY_ON = `has a dependency on %s`

    ERROR_MESSAGE_MULTIPLE_OF = `must be a multiple of %s`

    ERROR_MESSAGE_ARRAY_NO_ADDITIONAL_ITEM = `no additional item allowed on array`

    ERROR_MESSAGE_ADDITIONAL_PROPERTY_NOT_ALLOWED = `additional property "%s" is not allowed`
    ERROR_MESSAGE_INVALID_PATTERN_PROPERTY        = `property "%s" does not match pattern %s`

    ERROR_MESSAGE_INTERNAL = `internal error %s`

    ERROR_MESSAGE_GET_HTTP_BAD_STATUS = `Could not read schema from HTTP, response status is %d`

    ERROR_MESSAGE_NEW_SCHEMA_DOCUMENT_INVALID_ARGUMENT = `Invalid argument, must be a JSON string, a JSON reference string or a map[string]interface{}`

    ERROR_MESSAGE_INVALID_REGEX_PATTERN = `Invalid regex pattern '%s'`
    ERROR_MESSAGE_X_MUST_BE_VALID_REGEX = `%s must be a valid regex`

    ERROR_MESSAGE_X_MUST_BE_GREATER_OR_TO_0 = `%s must be greater than or equal to 0`

    ERROR_MESSAGE_X_CANNOT_BE_GREATER_THAN_Y = `%s cannot be greater than %s`

    ERROR_MESSAGE_X_MUST_BE_STRICTLY_GREATER_THAN_0 = `%s must be strictly greater than 0`

    ERROR_MESSAGE_X_CANNOT_BE_USED_WITHOUT_Y = `%s cannot be used without %s`

    ERROR_MESSAGE_REFERENCE_X_MUST_BE_CANONICAL = `Reference %s must be canonical`

    RESULT_ERROR_FORMAT = `%s : %s, given %s` // context, description, value
const (
    KEY_SCHEMA                = "$subSchema"
    KEY_ID                    = "$id"
    KEY_REF                   = "$ref"
    KEY_TITLE                 = "title"
    KEY_DESCRIPTION           = "description"
    KEY_TYPE                  = "type"
    KEY_ITEMS                 = "items"
    KEY_ADDITIONAL_ITEMS      = "additionalItems"
    KEY_PROPERTIES            = "properties"
    KEY_PATTERN_PROPERTIES    = "patternProperties"
    KEY_ADDITIONAL_PROPERTIES = "additionalProperties"
    KEY_DEFINITIONS           = "definitions"
    KEY_MULTIPLE_OF           = "multipleOf"
    KEY_MINIMUM               = "minimum"
    KEY_MAXIMUM               = "maximum"
    KEY_EXCLUSIVE_MINIMUM     = "exclusiveMinimum"
    KEY_EXCLUSIVE_MAXIMUM     = "exclusiveMaximum"
    KEY_MIN_LENGTH            = "minLength"
    KEY_MAX_LENGTH            = "maxLength"
    KEY_PATTERN               = "pattern"
    KEY_MIN_PROPERTIES        = "minProperties"
    KEY_MAX_PROPERTIES        = "maxProperties"
    KEY_DEPENDENCIES          = "dependencies"
    KEY_REQUIRED              = "required"
    KEY_MIN_ITEMS             = "minItems"
    KEY_MAX_ITEMS             = "maxItems"
    KEY_UNIQUE_ITEMS          = "uniqueItems"
    KEY_ENUM                  = "enum"
    KEY_ONE_OF                = "oneOf"
    KEY_ANY_OF                = "anyOf"
    KEY_ALL_OF                = "allOf"
    KEY_NOT                   = "not"
const (
    TYPE_ARRAY   = `array`
    TYPE_BOOLEAN = `boolean`
    TYPE_INTEGER = `integer`
    TYPE_NUMBER  = `number`
    TYPE_NULL    = `null`
    TYPE_OBJECT  = `object`
    TYPE_STRING  = `string`


var JSON_TYPES []string
var SCHEMA_TYPES []string

func NewGoLoader Uses

func NewGoLoader(source interface{}) *jsonGoLoader

func NewReferenceLoader Uses

func NewReferenceLoader(source string) *jsonReferenceLoader

func NewStringLoader Uses

func NewStringLoader(source string) *jsonStringLoader

type JSONLoader Uses

type JSONLoader interface {
    // contains filtered or unexported methods

type Result Uses

type Result struct {
    // contains filtered or unexported fields

func Validate Uses

func Validate(ls JSONLoader, ld JSONLoader) (*Result, error)

func (*Result) Errors Uses

func (v *Result) Errors() []ResultError

func (*Result) Valid Uses

func (v *Result) Valid() bool

type ResultError Uses

type ResultError struct {
    Context     *jsonContext // Tree like notation of the part that failed the validation. ex (root).a.b ...
    Description string       // A human readable error message
    Value       interface{}  // Value given by the JSON file that is the source of the error

func (ResultError) String Uses

func (v ResultError) String() string

type Schema Uses

type Schema struct {
    // contains filtered or unexported fields

func NewSchema Uses

func NewSchema(l JSONLoader) (*Schema, error)

func (*Schema) InsertDefaults Uses

func (s *Schema) InsertDefaults(into map[string]interface{}) (m map[string]interface{}, returnErr error)

InsertDefaults takes a map[string]interface{} and inserts any missing default values specified in the JSON-Schema document. If the given "into" map is nil, it will be created.

This is an initial implementation which does not support refs, etc. The schema must be for an object, not a bare value.

func (*Schema) SetRootSchemaName Uses

func (d *Schema) SetRootSchemaName(name string)

func (*Schema) Validate Uses

func (v *Schema) Validate(l JSONLoader) (*Result, error)

Package gojsonschema imports 14 packages (graph) and is imported by 27 packages. Updated 2016-07-22. Refresh now. Tools for package owners.