修复匿名字段中基础数据类型指针解析错误问题
This commit is contained in:
parent
d407826f88
commit
4e54b5fe33
18
generate.go
18
generate.go
@ -606,23 +606,23 @@ func (g *Generate) handleAnonymousField(schemaName string, field reflect.StructF
|
||||
}
|
||||
for i := 0; i < handleType.NumField(); i++ {
|
||||
if handleType.Field(i).Anonymous {
|
||||
// 地柜处理多层嵌套匿名字段
|
||||
// 递归处理多层嵌套匿名字段
|
||||
g.handleAnonymousField(schemaName, handleType.Field(i))
|
||||
continue
|
||||
} else {
|
||||
itemField := handleType.Field(i)
|
||||
if itemField.Type.Kind() == reflect.Map || itemField.Type.Kind() == reflect.Slice || itemField.Type.Kind() == reflect.Array || itemField.Type.Kind() == reflect.Struct || itemField.Type.Kind() == reflect.Ptr {
|
||||
g.AddComponentsSchema(schemaName, handleType.Field(i).Type.PkgPath(), handleType.Field(i).Type)
|
||||
baseConvertType, isBaseType := g.realBaseType2SwaggerType(itemField.Type.String())
|
||||
if !isBaseType {
|
||||
g.AddComponentsSchema(schemaName, itemField.Type.PkgPath(), itemField.Type)
|
||||
continue
|
||||
} else {
|
||||
convertBaseType, _ := g.realBaseType2SwaggerType(handleType.Field(i).Type.String())
|
||||
paramName := ParseStructFieldTag.GetParamName(itemField)
|
||||
g.docData.Components.Schemas[schemaName].Properties[paramName] = &define.Property{
|
||||
Type: convertBaseType,
|
||||
Format: handleType.Field(i).Type.String(),
|
||||
Enum: ValidateRule.Enum(handleType.Field(i)),
|
||||
Default: ParseStructFieldTag.GetDefaultValue(handleType.Field(i)),
|
||||
Description: ParseStructFieldTag.GetParamDesc(handleType.Field(i)),
|
||||
Type: baseConvertType,
|
||||
Format: itemField.Type.String(),
|
||||
Enum: ValidateRule.Enum(itemField),
|
||||
Default: ParseStructFieldTag.GetDefaultValue(itemField),
|
||||
Description: ParseStructFieldTag.GetParamDesc(itemField),
|
||||
}
|
||||
if ValidateRule.IsRequired(itemField) {
|
||||
g.docData.Components.Schemas[schemaName].Required = append(g.docData.Components.Schemas[schemaName].Required, paramName)
|
||||
|
@ -27,6 +27,7 @@ type Meta struct {
|
||||
func Test_parser_Openapi3(t *testing.T) {
|
||||
type UserExt struct {
|
||||
Job string `json:"job" dc:"job" binding:"required"`
|
||||
JobPtr *string `json:"job_ptr" dc:"job_ptr" binding:"required"`
|
||||
Height string `json:"height" dc:"height" binding:"required"`
|
||||
}
|
||||
type User struct {
|
||||
|
Loading…
x
Reference in New Issue
Block a user