Generate JSON Schema out of Golang schema
First install the package
go get -u github.com/urakozz/go-json-schema-generator
Then create your generator file (see Example folder)
package main
import (
"fmt"
"github.com/urakozz/go-json-schema-generator"
)
type Domain struct {
Data string `json:"data"`
}
func main(){
fmt.Println(generator.Generate(&Domain{}))
}
required:"true"- field will be marked as requireddescription:"description"- description will be added
On string fields:
minLength:"5"- Set the minimum length of the valuemaxLength:"5"- Set the maximum length of the valueenum:"apple|banana|pear"- Limit the available values to a defined set, separated by vertical barsconst:"I need to be there"- Require the field to have a specific value.
On numeric types (strings and floats)
min:"-4.141592"- Set a minimum valuemax:"123456789"- Set a maximum valueexclusiveMin:"0"- Values must be strictly greater than this valueexclusiveMax:"11"- Values must be strictly smaller than this valueconst:"42"- Property must have exactly this value.
If struct field is pointer to the primitive type, then schema will allow this typa and null. E.g.:
type Domain struct {
NullableData *string `json:"nullableData"`
}
Output
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"nullableData": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
}
}