Handle arrays in schema type
This commit is contained in:
parent
1bfe91634c
commit
b8a10fdb3a
2 changed files with 25 additions and 3 deletions
|
@ -52,8 +52,11 @@ func resolveRef(def *jsonschema.Schema, root *jsonschema.Schema) *jsonschema.Sch
|
|||
}
|
||||
|
||||
func schemaType(schema *jsonschema.Schema) jsonschema.Type {
|
||||
if schema.Type != "" {
|
||||
return schema.Type
|
||||
switch {
|
||||
case len(schema.Type) == 1:
|
||||
return schema.Type[0]
|
||||
case len(schema.Type) > 0:
|
||||
return ""
|
||||
}
|
||||
|
||||
var v interface{}
|
||||
|
|
21
schema.go
21
schema.go
|
@ -17,6 +17,25 @@ const (
|
|||
TypeInteger Type = "integer"
|
||||
)
|
||||
|
||||
type TypeSet []Type
|
||||
|
||||
func (ts *TypeSet) UnmarshalJSON(b []byte) error {
|
||||
if b[0] == '[' {
|
||||
type rawTypeSet TypeSet
|
||||
out := (*rawTypeSet)(ts)
|
||||
return json.Unmarshal(b, out)
|
||||
} else {
|
||||
var t Type
|
||||
err := json.Unmarshal(b, &t)
|
||||
if err != nil {
|
||||
*ts = nil
|
||||
} else {
|
||||
*ts = []Type{t}
|
||||
}
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
type Schema struct {
|
||||
// Core
|
||||
Schema string `json:"$schema"`
|
||||
|
@ -51,7 +70,7 @@ type Schema struct {
|
|||
PropertyNames *Schema `json:"propertyNames"`
|
||||
|
||||
// Validation
|
||||
Type Type `json:"type"`
|
||||
Type TypeSet `json:"type"`
|
||||
Enum []interface{} `json:"enum"`
|
||||
Const interface{} `json:"const"`
|
||||
|
||||
|
|
Loading…
Reference in a new issue