Hmm, what do you think about unmarshaling the schema json directly into the validator object? So it would look like this:

```go
type Validator interface {
  Validate(interface{}) []ValidationError
}

type minimum json.Number

func (m minimum) Validate(interface{}) []ValidationError
```

The schema decoder would do an `Unmarshal` right into a `minimum` (after making a new one using `reflect.New`). Complex validators could implement `json.Unmarshaler` to intercept the incoming JSON.