From bd8977be0c429a6eec8a99bfefc4e41c74891865 Mon Sep 17 00:00:00 2001 From: j2gg0s Date: Thu, 15 Aug 2024 02:11:44 +0000 Subject: 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 Auto-Submit: Ian Lance Taylor Reviewed-by: Ian Lance Taylor LUCI-TryBot-Result: Go LUCI --- src/encoding/json/decode.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/encoding/json/decode.go') 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 -- cgit v1.3