From add721ef91ed533cf578ff7a604124e377329ae4 Mon Sep 17 00:00:00 2001 From: Emmanuel Odeke Date: Mon, 24 Oct 2016 21:20:04 -0700 Subject: encoding/json: encode nil Marshaler as "null" Fixes #16042. Change-Id: I0a28aa004246b7b0ffaaab457e077ad9035363c2 Reviewed-on: https://go-review.googlesource.com/31932 Reviewed-by: Russ Cox Run-TryBot: Russ Cox TryBot-Result: Gobot Gobot --- src/encoding/json/encode.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/encoding/json/encode.go') diff --git a/src/encoding/json/encode.go b/src/encoding/json/encode.go index 667df31ce3..98a9899502 100644 --- a/src/encoding/json/encode.go +++ b/src/encoding/json/encode.go @@ -443,7 +443,11 @@ func marshalerEncoder(e *encodeState, v reflect.Value, opts encOpts) { e.WriteString("null") return } - m := v.Interface().(Marshaler) + m, ok := v.Interface().(Marshaler) + if !ok { + e.WriteString("null") + return + } b, err := m.MarshalJSON() if err == nil { // copy JSON into buffer, checking validity. -- cgit v1.3