jsoniter_adapter.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. if nil == m {
  14. return nil, nil
  15. }
  16. return m.MarshalJSON()
  17. } else {
  18. return adapter.Marshal(v)
  19. }
  20. }
  21. Unmarshal = adapter.Unmarshal
  22. MarshalToString = func(v interface{}) (string, error) {
  23. if nil == v {
  24. return "", nil
  25. } else if m, ok := v.(json.Marshaler); ok {
  26. if nil == m {
  27. return "", nil
  28. }
  29. data, err := m.MarshalJSON()
  30. if nil != err {
  31. return "", err
  32. }
  33. return string(data), err
  34. } else {
  35. return adapter.MarshalToString(v)
  36. }
  37. }
  38. UnmarshalFromString = adapter.UnmarshalFromString
  39. MarshalIndent = adapter.MarshalIndent
  40. NewDecoder = adapter.NewDecoder
  41. NewEncoder = adapter.NewEncoder
  42. )