]> Cypherpunks repositories - gostls13.git/commit
encoding/json: avoid misleading errors under goexperiment.jsonv2
authorJoe Tsai <joetsai@digital-static.net>
Sat, 11 Oct 2025 18:57:46 +0000 (11:57 -0700)
committerJoseph Tsai <joetsai@digital-static.net>
Tue, 14 Oct 2025 19:20:23 +0000 (12:20 -0700)
commitee5af46172e64eceddb56018de8ea850fe0a6cae
tree7b80cbd4d4a5490f725890184b5323e1ae0bb62a
parent11d3d2f77d8293fe14638e74cbf52d1241b60e78
encoding/json: avoid misleading errors under goexperiment.jsonv2

The jsontext package represents the location of JSON errors
using a JSON Pointer (RFC 6901). This uses the JSON type system.

Unfortunately the v1 json.UnmarshalTypeError assumes a Go struct-based
mechanism for reporting the location of errors
(and has historically never been implemented correctly since
it was a weird mix of both JSON and Go namespaces; see #43126).
Trying to map a JSON Pointer into UnmarshalTypeError.{Struct,Field}
is difficult to get right without teaching jsontext
about the Go type system.

To reduce the probability of misleading errors,
check whether the last token looks like a JSON array index
and if so, elide the phrase "into Go struct field".

Fixes #74801

Change-Id: Id2088ffb9c339a9238ed38c90223d86a89422842
Reviewed-on: https://go-review.googlesource.com/c/go/+/710676
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
src/encoding/json/v2_decode.go
src/encoding/json/v2_decode_test.go