mirror of
https://github.com/weloe/token-go.git
synced 2025-09-27 03:46:01 +08:00
35 lines
656 B
Go
35 lines
656 B
Go
package persist
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/weloe/token-go/util"
|
|
)
|
|
|
|
type JsonSerializer struct {
|
|
}
|
|
|
|
func NewJsonSerializer() *JsonSerializer {
|
|
return &JsonSerializer{}
|
|
}
|
|
|
|
func (j *JsonSerializer) Serialize(data interface{}) ([]byte, error) {
|
|
serializedData, err := util.InterfaceToBytes(data)
|
|
if err == nil && serializedData != nil {
|
|
return serializedData, nil
|
|
}
|
|
|
|
serializedData, err = json.Marshal(data)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return serializedData, nil
|
|
}
|
|
|
|
func (j *JsonSerializer) UnSerialize(data []byte, result interface{}) error {
|
|
err := json.Unmarshal(data, &result)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|