// 设置jsoniter为默认库 // +build jsoniter // 仅当编译时带 -tags=jsoniter 参数时才生效 package jsonutil import ( "encoding/json" "github.com/json-iterator/go" ) var ( adapter = jsoniter.ConfigCompatibleWithStandardLibrary Marshal = func(v interface{}) ([]byte, error) { if nil == v { return nil, nil } else if m, ok := v.(json.Marshaler); ok { if nil == m { return nil, nil } return m.MarshalJSON() } else { return adapter.Marshal(v) } } Unmarshal = adapter.Unmarshal MarshalToString = func(v interface{}) (string, error) { if nil == v { return "", nil } else if m, ok := v.(json.Marshaler); ok { if nil == m { return "", nil } data, err := m.MarshalJSON() if nil != err { return "", err } return string(data), err } else { return adapter.MarshalToString(v) } } UnmarshalFromString = adapter.UnmarshalFromString MarshalIndent = adapter.MarshalIndent NewDecoder = adapter.NewDecoder NewEncoder = adapter.NewEncoder )