Files
commons/check_valid.go
2026-04-20 10:27:58 -04:00

39 lines
679 B
Go

package commons
import (
"encoding/json"
"log"
"github.com/ianlancetaylor/jsonschema"
"github.com/ianlancetaylor/jsonschema/draft7"
)
func Validate(schema string, dataAny any) error {
data := StructToMapRecursive(dataAny)
content := []byte(schema)
var v any
if err := json.Unmarshal(content, &v); err != nil {
log.Printf("Failed to decode json %#v", err)
return err
}
vldtor, err := jsonschema.SchemaFromJSON(draft7.SchemaID, nil, v)
if err != nil {
log.Printf("Failed to load schema %v", err)
return err
}
// validate
valid := vldtor.Validate(data)
if valid != nil {
log.Printf("Invalid json: %v", valid)
return valid
}
return nil
}