From cc39d8087b20fce14e60b7e5f287593da2c72749 Mon Sep 17 00:00:00 2001 From: William Poussier Date: Wed, 11 Sep 2019 15:33:25 +0000 Subject: encoding/json: encode nil encoding.TextMarshaler instance as "null" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #34235. Change-Id: Ia3795fd18860530fa6a4b171545f525e784ffdcb GitHub-Last-Rev: 1a319c452857818f7aaf22ef46823b43ca9b2276 GitHub-Pull-Request: golang/go#34238 Reviewed-on: https://go-review.googlesource.com/c/go/+/194642 Reviewed-by: Daniel Martí Run-TryBot: Daniel Martí 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 0758b2fc9e..e5dd1b7799 100644 --- a/src/encoding/json/encode.go +++ b/src/encoding/json/encode.go @@ -481,7 +481,11 @@ func textMarshalerEncoder(e *encodeState, v reflect.Value, opts encOpts) { e.WriteString("null") return } - m := v.Interface().(encoding.TextMarshaler) + m, ok := v.Interface().(encoding.TextMarshaler) + if !ok { + e.WriteString("null") + return + } b, err := m.MarshalText() if err != nil { e.error(&MarshalerError{v.Type(), err}) -- cgit v1.3