| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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)
- }
|