30 lines
593 B
Go
30 lines
593 B
Go
package dbutil
|
|
|
|
import "encoding/json"
|
|
|
|
// MarshalJSON marshals a value to a JSON string for storage.
|
|
// Returns "" on nil, error, or empty-equivalent values ("null", "[]", "{}").
|
|
func MarshalJSON(v any) string {
|
|
if v == nil {
|
|
return ""
|
|
}
|
|
b, err := json.Marshal(v)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
s := string(b)
|
|
if s == "null" || s == "[]" || s == "{}" {
|
|
return ""
|
|
}
|
|
return s
|
|
}
|
|
|
|
// UnmarshalJSON unmarshals a JSON string into the target.
|
|
// Returns nil on empty input.
|
|
func UnmarshalJSON(s string, v any) error {
|
|
if s == "" {
|
|
return nil
|
|
}
|
|
return json.Unmarshal([]byte(s), v)
|
|
}
|