Default values in structure

Swagger default value for golang stucture.

format: 
doc:"default(my_defaul_value)"

type MyStruct struct {
	Template string `json:"template" doc:"default(<h1>Hello, {{ name }}! </h1>)"`
	Name string `json:"name"`
	MyNumber int64 `json:"temp"  doc:"default(10)"`
	MyBool bool `json:"bl"  doc:"default(true)"`
	MyFloat float64 `json:"fl"  doc:"default(12.1234)"`
}
This commit is contained in:
Konstantin 2016-10-08 11:35:26 +03:00 committed by GitHub
parent 244e9ccdc9
commit 31406ebe5a
1 changed files with 24 additions and 0 deletions

View File

@ -770,6 +770,30 @@ func parseObject(d *ast.Object, k string, m *swagger.Schema, realTypes *[]string
var tagValues []string
stag := reflect.StructTag(strings.Trim(field.Tag.Value, "`"))
defaultValue := stag.Get("doc")
if defaultValue != ""{
r, _ := regexp.Compile(`default\((.*)\)`)
if r.MatchString(defaultValue) {
res := r.FindStringSubmatch(defaultValue)
mp.Default = res[1]
switch realType{
case "int","int64", "int32", "int16", "int8":
mp.Default, _ = strconv.Atoi(res[1])
case "bool":
mp.Default, _ = strconv.ParseBool(res[1])
case "float64":
mp.Default, _ = strconv.ParseFloat(res[1], 64)
case "float32":
mp.Default, _ = strconv.ParseFloat(res[1], 32)
default:
mp.Default = res[1]
}
}else{
ColorLog("[WARN] Invalid default value: %s\n", defaultValue)
}
}
tag := stag.Get("json")
if tag != "" {