futriis/internal/msgpack/deserializer.go
2026-02-27 22:04:04 +03:00

45 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// /futriis/internal/msgpack/deserializer.go
// Пакет msgpack расширяет функциональность десериализации для работы с динамическими типами.
// Deserializer предоставляет дополнительные методы для десериализации произвольных значений и map-структур из формата MessagePack.
// Используется когда точный тип данных неизвестен заранее, например, при обработке полей кортежей с различными типами значений.
// Интегрируется с основным сериализатором для полного цикла преобразований.
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
}