jsoniter_adapter.go 963 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. // 设置jsoniter为默认库 // +build jsoniter // 仅当编译时带 -tags=jsoniter 参数时才生效
  2. package jsonutil
  3. import (
  4. "encoding/json"
  5. "github.com/json-iterator/go"
  6. )
  7. var (
  8. adapter = jsoniter.ConfigCompatibleWithStandardLibrary
  9. Marshal = func(v interface{}) ([]byte, error) {
  10. if nil == v {
  11. return nil, nil
  12. } else if m, ok := v.(json.Marshaler); ok {
  13. return m.MarshalJSON()
  14. } else {
  15. return adapter.Marshal(v)
  16. }
  17. }
  18. Unmarshal = adapter.Unmarshal
  19. MarshalToString = func(v interface{}) (string, error) {
  20. if nil == v {
  21. return "", nil
  22. } else if m, ok := v.(json.Marshaler); ok {
  23. data, err := m.MarshalJSON()
  24. if nil != err {
  25. return "", err
  26. }
  27. return string(data), err
  28. } else {
  29. return adapter.MarshalToString(v)
  30. }
  31. }
  32. UnmarshalFromString = adapter.UnmarshalFromString
  33. MarshalIndent = adapter.MarshalIndent
  34. NewDecoder = adapter.NewDecoder
  35. NewEncoder = adapter.NewEncoder
  36. )