jsonunmarshaler.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package mapping
  2. import (
  3. "io"
  4. "github.com/wuntsong-org/go-zero-plus/core/jsonx"
  5. )
  6. const jsonTagKey = "json"
  7. var jsonUnmarshaler = NewUnmarshaler(jsonTagKey)
  8. // UnmarshalJsonBytes unmarshals content into v.
  9. func UnmarshalJsonBytes(content []byte, v any, opts ...UnmarshalOption) error {
  10. return unmarshalJsonBytes(content, v, getJsonUnmarshaler(opts...))
  11. }
  12. // UnmarshalJsonMap unmarshals content from m into v.
  13. func UnmarshalJsonMap(m map[string]any, v any, opts ...UnmarshalOption) error {
  14. return getJsonUnmarshaler(opts...).Unmarshal(m, v)
  15. }
  16. // UnmarshalJsonReader unmarshals content from reader into v.
  17. func UnmarshalJsonReader(reader io.Reader, v any, opts ...UnmarshalOption) error {
  18. return unmarshalJsonReader(reader, v, getJsonUnmarshaler(opts...))
  19. }
  20. func getJsonUnmarshaler(opts ...UnmarshalOption) *Unmarshaler {
  21. if len(opts) > 0 {
  22. return NewUnmarshaler(jsonTagKey, opts...)
  23. }
  24. return jsonUnmarshaler
  25. }
  26. func unmarshalJsonBytes(content []byte, v any, unmarshaler *Unmarshaler) error {
  27. var m any
  28. if err := jsonx.Unmarshal(content, &m); err != nil {
  29. return err
  30. }
  31. return unmarshaler.Unmarshal(m, v)
  32. }
  33. func unmarshalJsonReader(reader io.Reader, v any, unmarshaler *Unmarshaler) error {
  34. var m any
  35. if err := jsonx.UnmarshalFromReader(reader, &m); err != nil {
  36. return err
  37. }
  38. return unmarshaler.Unmarshal(m, v)
  39. }