Fix of api docs gen bug on object description of structs with anonymous fields

Added json:"-" as omitter on api docs gen of struct field for object description
Avoid use json:"omitempty" on api docs gen as object description field name
This commit is contained in:
juan 2014-10-22 10:45:26 -04:00
parent 41477f6d88
commit 9d2067e66e
1 changed files with 40 additions and 16 deletions

View File

@ -561,13 +561,35 @@ func getModel(str string) (pkgpath, objectname string, m swagger.Model, realType
} else { } else {
mp.Type = realType mp.Type = realType
} }
// if the tag contains json tag, set the name to the left most json tag
// dont add property if anonymous field
if field.Names != nil {
// set property name as field name
var name = field.Names[0].Name var name = field.Names[0].Name
if field.Tag != nil {
stag := reflect.StructTag(strings.Trim(field.Tag.Value, "`")) // if no tag skip tag processing
if tag := stag.Get("json"); tag != "" { if field.Tag == nil {
name = tag m.Properties[name] = mp
continue
} }
var tagValues []string
stag := reflect.StructTag(strings.Trim(field.Tag.Value, "`"))
tag := stag.Get("json")
if tag != "" {
tagValues = strings.Split(tag, ",")
}
// dont add property if json tag first value is "-"
if len(tagValues) == 0 || tagValues[0] != "-" {
// set property name to the left most json tag value only if is not omitempty
if len(tagValues) > 0 && tagValues[0] != "omitempty" {
name = tagValues[0]
}
if thrifttag := stag.Get("thrift"); thrifttag != "" { if thrifttag := stag.Get("thrift"); thrifttag != "" {
ts := strings.Split(thrifttag, ",") ts := strings.Split(thrifttag, ",")
if ts[0] != "" { if ts[0] != "" {
@ -580,10 +602,12 @@ func getModel(str string) (pkgpath, objectname string, m swagger.Model, realType
if desc := stag.Get("description"); desc != "" { if desc := stag.Get("description"); desc != "" {
mp.Description = desc mp.Description = desc
} }
}
m.Properties[name] = mp m.Properties[name] = mp
} }
} }
}
}
return return
} }
} }