From c79db39d2b4907122c3ddaf6209b8c968b442914 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Mon, 11 Jul 2022 17:10:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E7=BC=96=E8=A7=A3=E7=A0=81?= =?UTF-8?q?=E5=BA=93=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lego/sys/codec/codec.go | 7 ++- lego/sys/codec/render/core.go | 45 +++++++++++++++++++ .../json.go => render/json_extractor.go} | 45 +------------------ .../{stream/json.go => render/json_stream.go} | 3 +- lego/sys/codec/sys_test.go | 2 +- 5 files changed, 51 insertions(+), 51 deletions(-) create mode 100644 lego/sys/codec/render/core.go rename lego/sys/codec/{extractor/json.go => render/json_extractor.go} (94%) rename lego/sys/codec/{stream/json.go => render/json_stream.go} (99%) diff --git a/lego/sys/codec/codec.go b/lego/sys/codec/codec.go index ab057de18..4761a4807 100644 --- a/lego/sys/codec/codec.go +++ b/lego/sys/codec/codec.go @@ -4,9 +4,8 @@ import ( "sync" "go_dreamfactory/lego/sys/codec/core" - "go_dreamfactory/lego/sys/codec/extractor" "go_dreamfactory/lego/sys/codec/factory" - "go_dreamfactory/lego/sys/codec/stream" + "go_dreamfactory/lego/sys/codec/render" "github.com/modern-go/reflect2" ) @@ -18,12 +17,12 @@ func newSys(options core.Options) (sys *codec, err error) { encoderCache: new(sync.Map), streamPool: &sync.Pool{ New: func() interface{} { - return stream.NewStream(sys, 512) + return render.NewStream(sys, 512) }, }, extraPool: &sync.Pool{ New: func() interface{} { - return extractor.NewExtractor(sys) + return render.NewExtractor(sys) }, }, } diff --git a/lego/sys/codec/render/core.go b/lego/sys/codec/render/core.go new file mode 100644 index 000000000..a62153d14 --- /dev/null +++ b/lego/sys/codec/render/core.go @@ -0,0 +1,45 @@ +package render + +import "go_dreamfactory/lego/sys/codec/core" + +const maxDepth = 10000 + +var hexDigits []byte +var valueTypes []core.ValueType + +func init() { + hexDigits = make([]byte, 256) + for i := 0; i < len(hexDigits); i++ { + hexDigits[i] = 255 + } + for i := '0'; i <= '9'; i++ { + hexDigits[i] = byte(i - '0') + } + for i := 'a'; i <= 'f'; i++ { + hexDigits[i] = byte((i - 'a') + 10) + } + for i := 'A'; i <= 'F'; i++ { + hexDigits[i] = byte((i - 'A') + 10) + } + valueTypes = make([]core.ValueType, 256) + for i := 0; i < len(valueTypes); i++ { + valueTypes[i] = core.InvalidValue + } + valueTypes['"'] = core.StringValue + valueTypes['-'] = core.NumberValue + valueTypes['0'] = core.NumberValue + valueTypes['1'] = core.NumberValue + valueTypes['2'] = core.NumberValue + valueTypes['3'] = core.NumberValue + valueTypes['4'] = core.NumberValue + valueTypes['5'] = core.NumberValue + valueTypes['6'] = core.NumberValue + valueTypes['7'] = core.NumberValue + valueTypes['8'] = core.NumberValue + valueTypes['9'] = core.NumberValue + valueTypes['t'] = core.BoolValue + valueTypes['f'] = core.BoolValue + valueTypes['n'] = core.NilValue + valueTypes['['] = core.ArrayValue + valueTypes['{'] = core.ObjectValue +} diff --git a/lego/sys/codec/extractor/json.go b/lego/sys/codec/render/json_extractor.go similarity index 94% rename from lego/sys/codec/extractor/json.go rename to lego/sys/codec/render/json_extractor.go index 5c6bf78ea..f12bc59a2 100644 --- a/lego/sys/codec/extractor/json.go +++ b/lego/sys/codec/render/json_extractor.go @@ -1,4 +1,4 @@ -package extractor +package render import ( "fmt" @@ -12,47 +12,6 @@ import ( "github.com/modern-go/reflect2" ) -const maxDepth = 10000 - -var hexDigits []byte -var valueTypes []core.ValueType - -func init() { - hexDigits = make([]byte, 256) - for i := 0; i < len(hexDigits); i++ { - hexDigits[i] = 255 - } - for i := '0'; i <= '9'; i++ { - hexDigits[i] = byte(i - '0') - } - for i := 'a'; i <= 'f'; i++ { - hexDigits[i] = byte((i - 'a') + 10) - } - for i := 'A'; i <= 'F'; i++ { - hexDigits[i] = byte((i - 'A') + 10) - } - valueTypes = make([]core.ValueType, 256) - for i := 0; i < len(valueTypes); i++ { - valueTypes[i] = core.InvalidValue - } - valueTypes['"'] = core.StringValue - valueTypes['-'] = core.NumberValue - valueTypes['0'] = core.NumberValue - valueTypes['1'] = core.NumberValue - valueTypes['2'] = core.NumberValue - valueTypes['3'] = core.NumberValue - valueTypes['4'] = core.NumberValue - valueTypes['5'] = core.NumberValue - valueTypes['6'] = core.NumberValue - valueTypes['7'] = core.NumberValue - valueTypes['8'] = core.NumberValue - valueTypes['9'] = core.NumberValue - valueTypes['t'] = core.BoolValue - valueTypes['f'] = core.BoolValue - valueTypes['n'] = core.NilValue - valueTypes['['] = core.ArrayValue - valueTypes['{'] = core.ObjectValue -} func NewExtractor(codec core.ICodec) *JsonExtractor { return &JsonExtractor{ codec: codec, @@ -145,7 +104,6 @@ func (this *JsonExtractor) ReadNil() (ret bool) { this.unreadByte() return false } - func (this *JsonExtractor) ReadArrayStart() (ret bool) { c := this.nextToken() if c == '[' { @@ -226,7 +184,6 @@ func (this *JsonExtractor) ReadKeyEnd() (ret bool) { this.reportError("ReadKeyEnd", `expect " but found `+string([]byte{c})) return } - func (this *JsonExtractor) Skip() { c := this.nextToken() switch c { diff --git a/lego/sys/codec/stream/json.go b/lego/sys/codec/render/json_stream.go similarity index 99% rename from lego/sys/codec/stream/json.go rename to lego/sys/codec/render/json_stream.go index abc581c7a..41ffc6784 100644 --- a/lego/sys/codec/stream/json.go +++ b/lego/sys/codec/render/json_stream.go @@ -1,4 +1,4 @@ -package stream +package render import ( "go_dreamfactory/lego/sys/codec/core" @@ -143,7 +143,6 @@ func (this *JsonStream) WriteString(val string) { } utils.WriteStringSlowPath(&this.buf, i, val, valLen) } - func (this *JsonStream) WriteBytes(val []byte) { this.buf = append(this.buf, val...) } diff --git a/lego/sys/codec/sys_test.go b/lego/sys/codec/sys_test.go index 679baf03f..3ec432333 100644 --- a/lego/sys/codec/sys_test.go +++ b/lego/sys/codec/sys_test.go @@ -27,7 +27,7 @@ func Test_sys(t *testing.T) { if sys, err := codec.NewSys(); err != nil { fmt.Printf("gin init err:%v", err) } else { - d, err := sys.MarshalJson(&TestData{Name: "liwe1idao", Value: 10, Array: []interface{}{1, "dajiahao", &Test1Data{Name: "liwe1dao", Value: 123}}, Data: map[string]interface{}{"hah": 1, "asd": 999}}) + d, err := sys.MarshalJson(&TestData{Name: "http://liwei1dao.com?asd=1&dd=1", Value: 10, Array: []interface{}{1, "dajiahao", &Test1Data{Name: "liwe1dao", Value: 123}}, Data: map[string]interface{}{"hah": 1, "asd": 999}}) fmt.Printf("codec Marshal d:%s err:%v", d, err) data := &TestData{} err = sys.UnmarshalJson(d, data)