From fd58357a045048e69b42d859f8c62f0b2e7a0ed7 Mon Sep 17 00:00:00 2001 From: Lykin <137850705+tiny-craft@users.noreply.github.com> Date: Sat, 27 Jan 2024 15:12:44 +0800 Subject: [PATCH] fix: incorrect formatted data when save with msgpack --- backend/utils/convert/msgpack_convert.go | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/backend/utils/convert/msgpack_convert.go b/backend/utils/convert/msgpack_convert.go index 0a41551..8452d31 100644 --- a/backend/utils/convert/msgpack_convert.go +++ b/backend/utils/convert/msgpack_convert.go @@ -1,7 +1,6 @@ package convutil import ( - "bytes" "encoding/json" "github.com/vmihailenco/msgpack/v5" ) @@ -9,11 +8,15 @@ import ( type MsgpackConvert struct{} func (MsgpackConvert) Encode(str string) (string, bool) { - var err error - var buf bytes.Buffer - enc := msgpack.NewEncoder(&buf) - if err = enc.EncodeString(str); err == nil { - return buf.String(), true + var obj map[string]any + if err := json.Unmarshal([]byte(str), &obj); err == nil { + if b, err := msgpack.Marshal(obj); err == nil { + return string(b), true + } + } + + if b, err := msgpack.Marshal(str); err != nil { + return string(b), true } return str, false @@ -25,9 +28,9 @@ func (MsgpackConvert) Decode(str string) (string, bool) { return decodedStr, true } - var decodedObj map[string]any - if err := msgpack.Unmarshal([]byte(str), &decodedObj); err == nil { - if b, err := json.Marshal(decodedObj); err == nil { + var obj map[string]any + if err := msgpack.Unmarshal([]byte(str), &obj); err == nil { + if b, err := json.Marshal(obj); err == nil { return string(b), true } }