diff --git a/jwriter/writer.go b/jwriter/writer.go index eaf7924..7366b27 100644 --- a/jwriter/writer.go +++ b/jwriter/writer.go @@ -46,10 +46,17 @@ func (w *Writer) RawString(s string) { // RawByte appends raw binary data to the buffer or sets the error if it is given. Useful for // calling with results of MarshalJSON-like functions. func (w *Writer) Raw(data []byte, err error) { - if w.Error == nil && err != nil { + if w.Error != nil { + return + } + + switch { + case err != nil: w.Error = err - } else if w.Error == nil { + case len(data) > 0: w.Buffer.AppendBytes(data) + default: + w.RawString("null") } }