Repository: goccy/go-json (go)

Issue:
`Unmarshal` fails when decoding `null` as string
`Unmarshal` fails when decoding `null` as string.
Referring to `encoding/json`, the expected result is an empty string.

## Reproduction code

https://play.golang.org/p/-mRPc-XSadc

```go
package main

import (
	"fmt"

	"github.com/goccy/go-json"
)

type Message struct {
	Field string `json:"field"`
}

func main() {
	ok := `{"field": "value"}`
	ng := `{"field": null}`
	
	for _, s := range []string{ok, ng} {
		var msg Message
		err := json.Unmarshal([]byte(s), &msg)
		if err != nil {
			panic(err) // panics for `ng`
		}
		fmt.Println(msg)
	}
}
```

Pull request description:
Fix null in string type
fix #5 

Patch:
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


Test patch:
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) {