...
1
16
17 package issue_test
18
19 import (
20 `bytes`
21 `strings`
22 `testing`
23
24 `github.com/bytedance/sonic/decoder`
25 `github.com/stretchr/testify/require`
26 )
27
28 type Response struct {
29 Menu Menu `json:"menu"`
30 }
31
32 type Menu struct {
33 Items []*Item `json:"items"`
34 }
35
36 type Item struct {
37 ID string `json:"id"`
38 }
39
40 func (i *Item) UnmarshalJSON(buf []byte) error {
41 return nil
42 }
43
44 func TestIssue263(t *testing.T) {
45 q := `{
46 "menu": {
47 "items": [
48 {`+strings.Repeat(" ", 1024)+`}
49 ]
50 }
51 }`
52
53 var response Response
54 require.Nil(t, decoder.NewStreamDecoder(bytes.NewReader([]byte(q))).Decode(&response))
55
56 q = `{
57 "menu": {
58 "items": [
59 {"a":"`+strings.Repeat("b", 2048)+`"}
60 ]
61 }
62 }`
63
64 require.Nil(t, decoder.NewStreamDecoder(bytes.NewReader([]byte(q))).Decode(&response))
65 }
View as plain text