Files
base/pkg/enum/json.go
2026-04-10 18:25:21 +03:30

23 lines
414 B
Go

package enum
import (
"encoding/json"
"fmt"
"strings"
)
func MarshalEnum[T fmt.Stringer](val T) ([]byte, error) {
return json.Marshal(val.String())
}
func UnmarshalEnum[T fmt.Stringer](b []byte, enumValues []T) (T, error) {
var zero T
s := strings.Trim(string(b), `"`)
for _, val := range enumValues {
if val.String() == s {
return val, nil
}
}
return zero, fmt.Errorf("invalid value: %s", s)
}