diff options
| author | Taesu Pyo <pyotaesu@gmail.com> | 2018-08-28 15:56:10 +0000 |
|---|---|---|
| committer | Daniel Martí <mvdan@mvdan.cc> | 2018-08-28 16:00:33 +0000 |
| commit | 21e85c293d02f8cb243b387b37a3d9c1c16305f7 (patch) | |
| tree | 636902acb7b98f3db61d2f2f8e23f0cffbf52aa2 /src/encoding/json/decode.go | |
| parent | 422151ad50d03e142dc298a83523d7d8e2d515c5 (diff) | |
| download | go-21e85c293d02f8cb243b387b37a3d9c1c16305f7.tar.xz | |
encoding/json: fix UnmarshalTypeError without field and struct values
Fixes #26444
Fixes #27275
Change-Id: I9e8cbff79f7643ca8964c572c1a98172b6831730
GitHub-Last-Rev: 7eea2158b67ccab34b45a21e8f4289c36de02d93
GitHub-Pull-Request: golang/go#26719
Reviewed-on: https://go-review.googlesource.com/126897
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/encoding/json/decode.go')
| -rw-r--r-- | src/encoding/json/decode.go | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/encoding/json/decode.go b/src/encoding/json/decode.go index 2e734fb39e..fd2bf92dc2 100644 --- a/src/encoding/json/decode.go +++ b/src/encoding/json/decode.go @@ -670,6 +670,7 @@ func (d *decodeState) object(v reflect.Value) error { } var mapElem reflect.Value + originalErrorContext := d.errorContext for { // Read opening " of string key or closing }. @@ -829,8 +830,7 @@ func (d *decodeState) object(v reflect.Value) error { return errPhase } - d.errorContext.Struct = nil - d.errorContext.Field = "" + d.errorContext = originalErrorContext } return nil } @@ -988,7 +988,7 @@ func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool if fromQuoted { return fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type()) } - return &UnmarshalTypeError{Value: "number", Type: v.Type(), Offset: int64(d.readIndex())} + d.saveError(&UnmarshalTypeError{Value: "number", Type: v.Type(), Offset: int64(d.readIndex())}) case reflect.Interface: n, err := d.convertNumber(s) if err != nil { |
