From 53523f6a7d6ca6aa6ec4a1d20af773f333284371 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 14 Nov 2011 16:03:23 -0500 Subject: [PATCH] encoding/json: decode [] as empty slice, not nil slice Test was already present, but bug in reflect.DeepEqual hid this bug. R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/5375090 --- src/pkg/encoding/json/decode.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pkg/encoding/json/decode.go b/src/pkg/encoding/json/decode.go index e786075455..2ea06c50c2 100644 --- a/src/pkg/encoding/json/decode.go +++ b/src/pkg/encoding/json/decode.go @@ -381,6 +381,7 @@ func (d *decodeState) array(v reflect.Value) { d.error(errPhase) } } + if i < av.Len() { if !sv.IsValid() { // Array. Zero the rest. @@ -392,6 +393,9 @@ func (d *decodeState) array(v reflect.Value) { sv.SetLen(i) } } + if i == 0 && av.Kind() == reflect.Slice && sv.IsNil() { + sv.Set(reflect.MakeSlice(sv.Type(), 0, 0)) + } } // object consumes an object from d.data[d.off-1:], decoding into the value v. -- 2.50.0