package qiyuesuosdk import ( "encoding/json" "fmt" "strconv" ) // flexStringID 兼容契约锁部分接口将大整数 id 以 JSON 字符串返回的情况。 type flexStringID string func (f *flexStringID) UnmarshalJSON(data []byte) error { if len(data) == 0 || string(data) == "null" { *f = "" return nil } switch data[0] { case '"': var s string if err := json.Unmarshal(data, &s); err != nil { return err } *f = flexStringID(s) return nil default: var n json.Number if err := json.Unmarshal(data, &n); err != nil { return err } *f = flexStringID(n.String()) return nil } } func (f flexStringID) String() string { return string(f) } func (f flexStringID) Int64() (int64, error) { s := f.String() if s == "" { return 0, fmt.Errorf("empty id") } return strconv.ParseInt(s, 10, 64) }