diff --git a/contrib/codecs/websocket/wsjson/wsjson.go b/contrib/codecs/websocket/wsjson/wsjson.go
index 8862811e144697c57113787ec5d958bc9a29ab37..286b63699343fe763c0d704738318ea1cbafbb42 100644
--- a/contrib/codecs/websocket/wsjson/wsjson.go
+++ b/contrib/codecs/websocket/wsjson/wsjson.go
@@ -6,24 +6,9 @@ import (
 
 	"gfx.cafe/util/go/bufpool"
 	json "github.com/goccy/go-json"
-	jsoniter "github.com/json-iterator/go"
 	"nhooyr.io/websocket"
 )
 
-var JZON = jsoniter.Config{
-	IndentionStep:                 0,
-	MarshalFloatWith6Digits:       false,
-	EscapeHTML:                    true,
-	SortMapKeys:                   true,
-	UseNumber:                     false,
-	DisallowUnknownFields:         false,
-	TagKey:                        "",
-	OnlyTaggedField:               false,
-	ValidateJsonRawMessage:        false,
-	ObjectFieldMustBeSimpleString: false,
-	CaseSensitive:                 false,
-}.Froze()
-
 // Read reads a JSON message from c into v.
 // It will reuse buffers in between calls to avoid allocations.
 func Read(ctx context.Context, c *websocket.Conn, v interface{}) error {
@@ -59,10 +44,8 @@ func write(ctx context.Context, c *websocket.Conn, v interface{}) (err error) {
 	if err != nil {
 		return err
 	}
-	st := JZON.BorrowStream(w)
-	defer JZON.ReturnStream(st)
-	st.WriteVal(v)
-	err = st.Flush()
+	st := json.NewEncoder(w)
+	err = st.Encode(v)
 	if err != nil {
 		return fmt.Errorf("failed to marshal JSON: %w", err)
 	}