aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/json/decode.go
diff options
context:
space:
mode:
authorj2gg0s <j2gg0s@gmail.com>2024-08-15 02:11:44 +0000
committerGopher Robot <gobot@golang.org>2024-08-15 20:28:20 +0000
commitbd8977be0c429a6eec8a99bfefc4e41c74891865 (patch)
tree907e447e0f9b604c6e29a9069220e6a619d8fb1b /src/encoding/json/decode.go
parent970b1c042cddb5f944d3db1cc2c3d87a3ffabe52 (diff)
downloadgo-bd8977be0c429a6eec8a99bfefc4e41c74891865.tar.xz
encoding/json: merge FieldStack if the error's Field exists.
When people return UnmarshalTypeError in UnmarshalJSON, we should append error's Field to FieldStack. Fixes #68750 Change-Id: I0a5a9b259a1b569de1bebc815ec936c913e10469 GitHub-Last-Rev: 18796addc3fa0d367ba1a3f4bd268ca246890fe0 GitHub-Pull-Request: golang/go#68870 Reviewed-on: https://go-review.googlesource.com/c/go/+/605455 Reviewed-by: Carlos Amedee <carlos@golang.org> Auto-Submit: Ian Lance Taylor <iant@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src/encoding/json/decode.go')
-rw-r--r--src/encoding/json/decode.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/encoding/json/decode.go b/src/encoding/json/decode.go
index 69a1013b85..19d4563e33 100644
--- a/src/encoding/json/decode.go
+++ b/src/encoding/json/decode.go
@@ -255,7 +255,11 @@ func (d *decodeState) addErrorContext(err error) error {
switch err := err.(type) {
case *UnmarshalTypeError:
err.Struct = d.errorContext.Struct.Name()
- err.Field = strings.Join(d.errorContext.FieldStack, ".")
+ fieldStack := d.errorContext.FieldStack
+ if err.Field != "" {
+ fieldStack = append(fieldStack, err.Field)
+ }
+ err.Field = strings.Join(fieldStack, ".")
}
}
return err