json.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package utils
  2. import (
  3. "encoding/json"
  4. "time"
  5. "video_course/errors"
  6. )
  7. func JSONToMap(str string) (map[string]interface{}, error) {
  8. var tempMap map[string]interface{}
  9. err := json.Unmarshal([]byte(str), &tempMap)
  10. if err != nil {
  11. err = errors.ErrJsonToMap
  12. return tempMap, err
  13. }
  14. return tempMap, nil
  15. }
  16. func MapToInt32(v interface{}, key string) (i int) {
  17. f, ok := v.(map[string]interface{})[key].(float64)
  18. if !ok {
  19. println(errors.NewServiceErr(errors.JsonToMaptErr, "float64转int32失败,字段名:"+key))
  20. //panic(errors.NewServiceErr(errors.FloatToInt16Err, "float64转int64失败,字段名:"+key))
  21. }
  22. i = int(f)
  23. return
  24. }
  25. func MapToInt16(v interface{}, key string) (i int16) {
  26. f, ok := v.(map[string]interface{})[key].(float64)
  27. if !ok {
  28. println(errors.NewServiceErr(errors.JsonToMaptErr, "float64转int16失败,字段名:"+key))
  29. //panic(errors.NewServiceErr(errors.FloatToInt16Err, "float64转int64失败,字段名:"+key))
  30. }
  31. i = int16(f)
  32. return
  33. }
  34. func MapToInt64(v interface{}, key string) (i int64) {
  35. f, ok := v.(map[string]interface{})[key].(float64)
  36. if !ok {
  37. println(errors.NewServiceErr(errors.JsonToMaptErr, "无法转成int64,字段名"+key))
  38. }
  39. i = int64(f)
  40. return
  41. }
  42. func MapToString(v interface{}, key string) (str string) {
  43. f, ok := v.(map[string]interface{})[key].(string)
  44. if !ok {
  45. println(errors.NewServiceErr(errors.JsonToMaptErr, "无法找到这个key值"+key))
  46. }
  47. str = f
  48. return
  49. }
  50. func MapToTime(v interface{}, key string) (t time.Time) {
  51. f, ok := v.(map[string]interface{})[key].(string)
  52. if !ok {
  53. println(errors.NewServiceErr(errors.JsonToMaptErr, "无法找到这个key值"+key))
  54. }
  55. t, _ = time.Parse(time.RFC3339, f)
  56. return
  57. }