From 460499ee6588ed5c1f976d2ed05edd83b2983dac Mon Sep 17 00:00:00 2001 From: Masaaki Goshima Date: Sat, 8 Aug 2020 12:21:25 +0900 Subject: [PATCH] Fix null in string type --- decode_string.go | 2 +- decode_test.go | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/decode_string.go b/decode_string.go index 2c08153..2512271 100644 --- a/decode_string.go +++ b/decode_string.go @@ -135,7 +135,7 @@ func (d *stringDecoder) decodeByte(buf []byte, cursor int64) ([]byte, int64, err if buf[cursor+3] != 'l' { return nil, 0, errInvalidCharacter(buf[cursor+3], "null", cursor) } - cursor += 5 + cursor += 4 return []byte{}, cursor, nil default: goto ERROR diff --git a/decode_test.go b/decode_test.go index f4f7bfb..562f00c 100644 --- a/decode_test.go +++ b/decode_test.go @@ -135,6 +135,13 @@ func Test_Decoder(t *testing.T) { assertEq(t, "struct.D.AA", 2, v.D.AA) assertEq(t, "struct.D.BB", "world", v.D.BB) assertEq(t, "struct.D.CC", true, v.D.CC) + t.Run("struct.null", func(t *testing.T) { + var v struct { + A string + } + assertErr(t, json.Unmarshal([]byte(`{"a":null}`), &v)) + assertEq(t, "string is null", v.A, "") + }) }) t.Run("interface", func(t *testing.T) { t.Run("number", func(t *testing.T) {