43 lines
1.2 KiB
Go
43 lines
1.2 KiB
Go
|
|
// /futriis/internal/msgpack/deserializer.go
|
||
|
|
// Пакет msgpack предоставляет дополнительные методы десериализации
|
||
|
|
// /futriis/internal/msgpack/deserializer.go
|
||
|
|
|
||
|
|
package msgpack
|
||
|
|
|
||
|
|
import (
|
||
|
|
"futriis/pkg/types"
|
||
|
|
"github.com/vmihailenco/msgpack/v5"
|
||
|
|
)
|
||
|
|
|
||
|
|
// Deserializer расширяет функциональность десериализации
|
||
|
|
type Deserializer struct {
|
||
|
|
serializer *Serializer
|
||
|
|
}
|
||
|
|
|
||
|
|
// NewDeserializer создаёт новый экземпляр десериализатора
|
||
|
|
func NewDeserializer() *Deserializer {
|
||
|
|
return &Deserializer{
|
||
|
|
serializer: NewSerializer(),
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// DeserializeValue десериализует значение произвольного типа
|
||
|
|
func (d *Deserializer) DeserializeValue(data []byte) (interface{}, error) {
|
||
|
|
var value interface{}
|
||
|
|
err := msgpack.Unmarshal(data, &value)
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
return value, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
// DeserializeMap десериализует данные в карту
|
||
|
|
func (d *Deserializer) DeserializeMap(data []byte) (map[string]interface{}, error) {
|
||
|
|
var m map[string]interface{}
|
||
|
|
err := msgpack.Unmarshal(data, &m)
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
return m, nil
|
||
|
|
}
|