|
|
- package easyjson
-
- import (
- "github.com/mailru/easyjson/jlexer"
- "github.com/mailru/easyjson/jwriter"
- )
-
- // RawMessage is a raw piece of JSON (number, string, bool, object, array or
- // null) that is extracted without parsing and output as is during marshaling.
- type RawMessage []byte
-
- // MarshalEasyJSON does JSON marshaling using easyjson interface.
- func (v *RawMessage) MarshalEasyJSON(w *jwriter.Writer) {
- if len(*v) == 0 {
- w.RawString("null")
- } else {
- w.Raw(*v, nil)
- }
- }
-
- // UnmarshalEasyJSON does JSON unmarshaling using easyjson interface.
- func (v *RawMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
- *v = RawMessage(l.Raw())
- }
-
- // UnmarshalJSON implements encoding/json.Unmarshaler interface.
- func (v *RawMessage) UnmarshalJSON(data []byte) error {
- *v = data
- return nil
- }
-
- var nullBytes = []byte("null")
-
- // MarshalJSON implements encoding/json.Marshaler interface.
- func (v RawMessage) MarshalJSON() ([]byte, error) {
- if len(v) == 0 {
- return nullBytes, nil
- }
- return v, nil
- }
-
- // IsDefined is required for integration with omitempty easyjson logic.
- func (v *RawMessage) IsDefined() bool {
- return len(*v) > 0
- }
|