json.go 479 B

123456789101112131415161718192021222324
  1. package json_util
  2. import (
  3. "errors"
  4. )
  5. type RawMessage []byte
  6. // MarshalJSON: Customize json.RawMessage default behavior
  7. func (m RawMessage) MarshalJSON() ([]byte, error) {
  8. if len(m) == 0 {
  9. return []byte("null"), nil
  10. }
  11. return m, nil
  12. }
  13. // UnmarshalJSON: sets *m to a copy of data.
  14. func (m *RawMessage) UnmarshalJSON(data []byte) error {
  15. if m == nil {
  16. return errors.New("json.RawMessage: UnmarshalJSON on nil pointer")
  17. }
  18. *m = append((*m)[0:0], data...)
  19. return nil
  20. }