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) {