本文主要记录常用的golang
代码片段。
可以将自定义类型以Json
编码的方式存入数据库文本类型中。使用ORM
时,和普通类型没有区别。
// JSONMap
type JSONMap map[string]string
// Scan Scanner
func (t *JSONMap) Scan(value interface{}) error {
if value == nil {
return nil
}
v, ok := value.(string)
if !ok {
return fmt.Errorf("value is not string, value: %v", value)
}
// empty
if len(v) == 0 {
b = "{}"
}
return json.Unmarshal([]byte(v), t)
}
// Value Valuer
func (t JSONMap) Value() (driver.Value, error) {
if t == nil {
return nil, nil
}
return json.Marshal(t)
}