diff --git a/lego/utils/codec/factory/factory_struct.go b/lego/utils/codec/factory/factory_struct.go index a475652e3..03efeb622 100644 --- a/lego/utils/codec/factory/factory_struct.go +++ b/lego/utils/codec/factory/factory_struct.go @@ -3,6 +3,8 @@ package factory import ( "errors" "fmt" + "go_dreamfactory/lego/utils/codec/codecore" + "go_dreamfactory/lego/utils/codec/utils" "io" "reflect" "sort" @@ -10,8 +12,6 @@ import ( "unicode" "unsafe" - "go_dreamfactory/lego/utils/codec/codecore" - "github.com/modern-go/reflect2" ) @@ -108,6 +108,9 @@ func describeStruct(ctx *codecore.Ctx, typ reflect2.Type) *StructDescriptor { bindings := []*Binding{} for i := 0; i < structType.NumField(); i++ { field := structType.Field(i) + if !utils.IsExported(field.Name()) { //内部字段不处理 + continue + } tag, hastag := field.Tag().Lookup(ctx.Config.TagKey) if ctx.Config.OnlyTaggedField && !hastag && !field.Anonymous() { continue diff --git a/lego/utils/codec/utils/utils.go b/lego/utils/codec/utils/utils.go new file mode 100644 index 000000000..0ca85fb2e --- /dev/null +++ b/lego/utils/codec/utils/utils.go @@ -0,0 +1,12 @@ +package utils + +import ( + "unicode" + "unicode/utf8" +) + +///是否是内部字段 +func IsExported(name string) bool { + rune, _ := utf8.DecodeRuneInString(name) + return unicode.IsUpper(rune) +}