json.go 760 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package common
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. )
  6. func Unmarshal(data []byte, v any) error {
  7. return json.Unmarshal(data, v)
  8. }
  9. func UnmarshalJsonStr(data string, v any) error {
  10. return json.Unmarshal(StringToByteSlice(data), v)
  11. }
  12. func DecodeJson(reader *bytes.Reader, v any) error {
  13. return json.NewDecoder(reader).Decode(v)
  14. }
  15. func Marshal(v any) ([]byte, error) {
  16. return json.Marshal(v)
  17. }
  18. func GetJsonType(data json.RawMessage) string {
  19. data = bytes.TrimSpace(data)
  20. if len(data) == 0 {
  21. return "unknown"
  22. }
  23. firstChar := bytes.TrimSpace(data)[0]
  24. switch firstChar {
  25. case '{':
  26. return "object"
  27. case '[':
  28. return "array"
  29. case '"':
  30. return "string"
  31. case 't', 'f':
  32. return "boolean"
  33. case 'n':
  34. return "null"
  35. default:
  36. return "number"
  37. }
  38. }