Skip to content

Commit 0eadb7d

Browse files
authored
Merge pull request #2 from theater-improrama/master
Fix json.Number parsing of numeric json values
2 parents 49ea2ce + 0295af9 commit 0eadb7d

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

handler.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"encoding/json"
55
"github.com/99designs/gqlgen/graphql"
66
"reflect"
7+
"bytes"
78
)
89

910
type GraphqlRawParamsCollection []*graphql.RawParams
@@ -19,17 +20,24 @@ func (c GraphqlRawParamsCollection) Len() int {
1920

2021
// UnmarshalJSON could unmarshal slice or single query
2122
func (c *GraphqlRawParamsCollection) UnmarshalJSON(b []byte) error {
22-
err := json.Unmarshal(b, (*[]*graphql.RawParams)(c))
23-
if err == nil {
23+
r := bytes.NewReader(b)
24+
25+
d := json.NewDecoder(r)
26+
d.UseNumber()
27+
28+
if err := d.Decode((*[]*graphql.RawParams)(c)); err == nil {
2429
return nil
2530
}
2631

32+
if _, err := r.Seek(0, 0); err != nil {
33+
return err
34+
}
35+
2736
var n graphql.RawParams
28-
err = json.Unmarshal(b, &n)
29-
if err == nil {
30-
*c = []*graphql.RawParams{&n}
37+
if err := d.Decode(&n); err != nil {
3138
return nil
3239
}
3340

41+
*c = []*graphql.RawParams{&n}
3442
return nil
3543
}

0 commit comments

Comments
 (0)