mirror of
https://github.com/oarkflow/mq.git
synced 2025-10-06 16:36:53 +08:00
38 lines
746 B
Go
38 lines
746 B
Go
package codec
|
|
|
|
import (
|
|
"encoding/json"
|
|
)
|
|
|
|
type MarshallerFunc func(v any) ([]byte, error)
|
|
|
|
type UnmarshallerFunc func(data []byte, v any) error
|
|
|
|
func (f MarshallerFunc) Marshal(v any) ([]byte, error) {
|
|
return f(v)
|
|
}
|
|
|
|
func (f UnmarshallerFunc) Unmarshal(data []byte, v any) error {
|
|
return f(data, v)
|
|
}
|
|
|
|
var defaultMarshaller MarshallerFunc = json.Marshal
|
|
|
|
var defaultUnmarshaller UnmarshallerFunc = json.Unmarshal
|
|
|
|
func SetMarshaller(marshaller MarshallerFunc) {
|
|
defaultMarshaller = marshaller
|
|
}
|
|
|
|
func SetUnmarshaller(unmarshaller UnmarshallerFunc) {
|
|
defaultUnmarshaller = unmarshaller
|
|
}
|
|
|
|
func Marshal(v any) ([]byte, error) {
|
|
return defaultMarshaller(v)
|
|
}
|
|
|
|
func Unmarshal(data []byte, v any) error {
|
|
return defaultUnmarshaller(data, v)
|
|
}
|