Files
2026-07-27 19:31:43 +08:00

36 lines
763 B
Go

// Package jsonvalue 提供不依赖业务模块的 JSON 基础值类型。
package jsonvalue
import (
"encoding/json"
"strings"
)
// FlexibleString 兼容 JSON 字符串、数字和 null,并统一以字符串保存。
type FlexibleString string
func (f *FlexibleString) UnmarshalJSON(raw []byte) error {
if string(raw) == "null" {
*f = ""
return nil
}
if len(raw) > 0 && raw[0] == '"' {
var value string
if err := json.Unmarshal(raw, &value); err != nil {
return err
}
*f = FlexibleString(value)
return nil
}
var value json.Number
if err := json.Unmarshal(raw, &value); err != nil {
return err
}
*f = FlexibleString(value.String())
return nil
}
func (f FlexibleString) String() string {
return strings.TrimSpace(string(f))
}