initial commit
This commit is contained in:
22
pkg/enum/json.go
Normal file
22
pkg/enum/json.go
Normal file
@@ -0,0 +1,22 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user