diff --git a/generate/swaggergen/g_docs.go b/generate/swaggergen/g_docs.go index 953721a..872c9b0 100644 --- a/generate/swaggergen/g_docs.go +++ b/generate/swaggergen/g_docs.go @@ -614,10 +614,25 @@ func parserComments(f *ast.FuncDecl, controllerName, pkgpath string) error { pp := strings.Split(p[2], ".") typ := pp[len(pp)-1] if len(pp) >= 2 { - m, mod, realTypes := getModel(p[2]) - para.Schema = &swagger.Schema{ - Ref: "#/definitions/" + m, + isArray := false + if p[1] == "body" && strings.HasPrefix(p[2], "[]") { + p[2] = p[2][2:] + isArray = true } + m, mod, realTypes := getModel(p[2]) + if isArray { + para.Schema = &swagger.Schema{ + Type: "array", + Items: &swagger.Schema{ + Ref: "#/definitions/" + m, + }, + } + } else { + para.Schema = &swagger.Schema{ + Ref: "#/definitions/" + m, + } + } + if _, ok := modelsList[pkgpath+controllerName]; !ok { modelsList[pkgpath+controllerName] = make(map[string]swagger.Schema) } @@ -766,10 +781,20 @@ func setParamType(para *swagger.Parameter, typ string, pkgpath, controllerName s appendModels(pkgpath, controllerName, realTypes) } if isArray { - para.Type = "array" - para.Items = &swagger.ParameterItems{ - Type: paraType, - Format: paraFormat, + if para.In == "body" { + para.Schema = &swagger.Schema{ + Type: "array", + Items: &swagger.Schema{ + Type: paraType, + Format: paraFormat, + }, + } + } else { + para.Type = "array" + para.Items = &swagger.ParameterItems{ + Type: paraType, + Format: paraFormat, + } } } else { para.Type = paraType