123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- // 设置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
- )
|