From f09e76bf8b46a1e20e62b85426dffae8d2979f4b Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Mon, 21 Oct 2024 17:15:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96serder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/serder/serder.go | 11 +++++++++++ utils/serder/union/union.go | 27 --------------------------- 2 files changed, 11 insertions(+), 27 deletions(-) delete mode 100644 utils/serder/union/union.go diff --git a/utils/serder/serder.go b/utils/serder/serder.go index 6c7b72a..268215d 100644 --- a/utils/serder/serder.go +++ b/utils/serder/serder.go @@ -53,6 +53,17 @@ func JSONToObjectEx[T any](data []byte) (T, error) { return ret, nil } +// 将JSON字符串转为对象。支持TypeUnion。 +func JSONToObjectExRaw(data []byte, ret any) error { + dec := defaultAPI.NewDecoder(bytes.NewReader(data)) + err := dec.Decode(&ret) + if err != nil { + return err + } + + return nil +} + // 将JSON字符串转为对象。支持TypeUnion。 func JSONToObjectStreamEx[T any](stream io.Reader) (T, error) { var ret T diff --git a/utils/serder/union/union.go b/utils/serder/union/union.go deleted file mode 100644 index b09dbfd..0000000 --- a/utils/serder/union/union.go +++ /dev/null @@ -1,27 +0,0 @@ -package union - -import ( - "fmt" - "reflect" - - "gitlink.org.cn/cloudream/common/utils/serder" -) - -type Value[T any] struct { - Value T -} - -func (o *Value[T]) Scan(src interface{}) error { - data, ok := src.([]uint8) - if !ok { - return fmt.Errorf("unknow src type: %v", reflect.TypeOf(data)) - } - - val, err := serder.JSONToObjectEx[T](data) - if err != nil { - return err - } - - o.Value = val - return nil -}