diff options
Diffstat (limited to 'util/json_util/json.go')
| -rw-r--r-- | util/json_util/json.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/util/json_util/json.go b/util/json_util/json.go new file mode 100644 index 00000000..65ad789e --- /dev/null +++ b/util/json_util/json.go @@ -0,0 +1,24 @@ +package json_util + +import ( + "errors" +) + +type RawMessage []byte + +// MarshalJSON 自定义 json.RawMessage 默认行为 +func (m RawMessage) MarshalJSON() ([]byte, error) { + if len(m) == 0 { + return []byte("null"), nil + } + return m, nil +} + +// UnmarshalJSON sets *m to a copy of data. +func (m *RawMessage) UnmarshalJSON(data []byte) error { + if m == nil { + return errors.New("json.RawMessage: UnmarshalJSON on nil pointer") + } + *m = append((*m)[0:0], data...) + return nil +} |
