Browse Source

优化serder

gitlink
Sydonian 1 year ago
parent
commit
f09e76bf8b
2 changed files with 11 additions and 27 deletions
  1. +11
    -0
      utils/serder/serder.go
  2. +0
    -27
      utils/serder/union/union.go

+ 11
- 0
utils/serder/serder.go View File

@@ -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


+ 0
- 27
utils/serder/union/union.go View File

@@ -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
}

Loading…
Cancel
Save