From 64793600cc7e6a7fc2d90cf3abbd962bc9c69847 Mon Sep 17 00:00:00 2001 From: jkskj Date: Wed, 10 Jul 2024 20:46:19 +0800 Subject: [PATCH] optimize: use sonic instead of encoding/json --- json.go | 6 +++--- json_test.go | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/json.go b/json.go index 82c043b..2b0b576 100644 --- a/json.go +++ b/json.go @@ -8,7 +8,7 @@ package websocket import ( - "encoding/json" + "github.com/bytedance/sonic" "io" ) @@ -21,7 +21,7 @@ func (c *Conn) WriteJSON(v interface{}) error { if err != nil { return err } - err1 := json.NewEncoder(w).Encode(v) + err1 := sonic.ConfigDefault.NewEncoder(w).Encode(v) err2 := w.Close() if err1 != nil { return err1 @@ -39,7 +39,7 @@ func (c *Conn) ReadJSON(v interface{}) error { if err != nil { return err } - err = json.NewDecoder(r).Decode(v) + err = sonic.ConfigDefault.NewDecoder(r).Decode(v) if err == io.EOF { // One value is expected in the message. err = io.ErrUnexpectedEOF diff --git a/json_test.go b/json_test.go index c55232c..1dc05d5 100644 --- a/json_test.go +++ b/json_test.go @@ -9,7 +9,9 @@ package websocket import ( "bytes" - "encoding/json" + "errors" + "github.com/bytedance/sonic" + "github.com/bytedance/sonic/decoder" "io" "reflect" "testing" @@ -56,7 +58,7 @@ func TestPartialJSONRead(t *testing.T) { // Partial JSON values. - data, err := json.Marshal(v) + data, err := sonic.Marshal(v) if err != nil { t.Fatal(err) } @@ -82,7 +84,7 @@ func TestPartialJSONRead(t *testing.T) { for i := 0; i < messageCount; i++ { err := rc.ReadJSON(&v) - if err != io.ErrUnexpectedEOF { + if err != io.ErrUnexpectedEOF && !errors.As(err, &decoder.SyntaxError{}) { t.Error("read", i, err) } }