From 0aa3c88d86f4235fce79a73ab0d86a1613199335 Mon Sep 17 00:00:00 2001 From: Muxian Wu Date: Thu, 27 Sep 2018 15:16:26 +0800 Subject: [PATCH 1/2] changed the unmarshalling behaviour for unmarshalling {"key": []} into map[string]interface{}. The value for "key" in the map will be an empty slice instead of a nil slice. --- jlexer/lexer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jlexer/lexer.go b/jlexer/lexer.go index 51f0566..514c894 100644 --- a/jlexer/lexer.go +++ b/jlexer/lexer.go @@ -1151,7 +1151,7 @@ func (r *Lexer) Interface() interface{} { } else if r.token.delimValue == '[' { r.consume() - var ret []interface{} + ret := []interface{}{} for !r.IsDelim(']') { ret = append(ret, r.Interface()) r.WantComma() From a402cc944c4f6e5fcf215c6012c5c98b29e9b9c1 Mon Sep 17 00:00:00 2001 From: Muxian Wu Date: Fri, 28 Sep 2018 09:14:50 +0800 Subject: [PATCH 2/2] fixed the test case --- jlexer/lexer_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jlexer/lexer_test.go b/jlexer/lexer_test.go index 3149ce4..fcf9780 100644 --- a/jlexer/lexer_test.go +++ b/jlexer/lexer_test.go @@ -194,7 +194,7 @@ func TestInterface(t *testing.T) { {toParse: "5", want: float64(5)}, {toParse: `{}`, want: map[string]interface{}{}}, - {toParse: `[]`, want: []interface{}(nil)}, + {toParse: `[]`, want: []interface{}{}}, {toParse: `{"a": "b"}`, want: map[string]interface{}{"a": "b"}}, {toParse: `[5]`, want: []interface{}{float64(5)}},