From 2f2894af6aa10235cb2c86456884094b2274de64 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Thu, 13 Oct 2022 11:12:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0json=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96=E4=BF=9D=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lego/utils/codec/factory/factory_struct.go | 7 +++++-- lego/utils/codec/utils/utils.go | 12 ++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 lego/utils/codec/utils/utils.go 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) +}