修复匿名字段中基础数据类型指针解析错误问题
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++ {
|
for i := 0; i < handleType.NumField(); i++ {
|
||||||
if handleType.Field(i).Anonymous {
|
if handleType.Field(i).Anonymous {
|
||||||
// 地柜处理多层嵌套匿名字段
|
// 递归处理多层嵌套匿名字段
|
||||||
g.handleAnonymousField(schemaName, handleType.Field(i))
|
g.handleAnonymousField(schemaName, handleType.Field(i))
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
itemField := handleType.Field(i)
|
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 {
|
baseConvertType, isBaseType := g.realBaseType2SwaggerType(itemField.Type.String())
|
||||||
g.AddComponentsSchema(schemaName, handleType.Field(i).Type.PkgPath(), handleType.Field(i).Type)
|
if !isBaseType {
|
||||||
|
g.AddComponentsSchema(schemaName, itemField.Type.PkgPath(), itemField.Type)
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
convertBaseType, _ := g.realBaseType2SwaggerType(handleType.Field(i).Type.String())
|
|
||||||
paramName := ParseStructFieldTag.GetParamName(itemField)
|
paramName := ParseStructFieldTag.GetParamName(itemField)
|
||||||
g.docData.Components.Schemas[schemaName].Properties[paramName] = &define.Property{
|
g.docData.Components.Schemas[schemaName].Properties[paramName] = &define.Property{
|
||||||
Type: convertBaseType,
|
Type: baseConvertType,
|
||||||
Format: handleType.Field(i).Type.String(),
|
Format: itemField.Type.String(),
|
||||||
Enum: ValidateRule.Enum(handleType.Field(i)),
|
Enum: ValidateRule.Enum(itemField),
|
||||||
Default: ParseStructFieldTag.GetDefaultValue(handleType.Field(i)),
|
Default: ParseStructFieldTag.GetDefaultValue(itemField),
|
||||||
Description: ParseStructFieldTag.GetParamDesc(handleType.Field(i)),
|
Description: ParseStructFieldTag.GetParamDesc(itemField),
|
||||||
}
|
}
|
||||||
if ValidateRule.IsRequired(itemField) {
|
if ValidateRule.IsRequired(itemField) {
|
||||||
g.docData.Components.Schemas[schemaName].Required = append(g.docData.Components.Schemas[schemaName].Required, paramName)
|
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) {
|
func Test_parser_Openapi3(t *testing.T) {
|
||||||
type UserExt struct {
|
type UserExt struct {
|
||||||
Job string `json:"job" dc:"job" binding:"required"`
|
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"`
|
Height string `json:"height" dc:"height" binding:"required"`
|
||||||
}
|
}
|
||||||
type User struct {
|
type User struct {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user