]> Cypherpunks repositories - gostls13.git/commitdiff
encoding/json: remove suggestion on Unmarshaler with JSON null
authorJoe Tsai <joetsai@digital-static.net>
Sat, 28 Dec 2024 01:24:30 +0000 (17:24 -0800)
committerJoseph Tsai <joetsai@digital-static.net>
Mon, 30 Dec 2024 20:21:48 +0000 (12:21 -0800)
It is not true that Unmarshal always treats a JSON null
as being equivalent to a no-op.
For bools, ints, uints, floats, strings, arrays, and structs,
it treats a JSON null as a no-op. However, for []byte, slice,
map, pointer, or interface, it zeros the underlying value.

Remove this suggestion as the actual behavior is inconsistent.

Note that the proposed behavior in v2 Unmarshal is to consistently
zero out the underlying value.

Change-Id: I02cef0bf7919f25cfd0aceb04486d37498761181
Reviewed-on: https://go-review.googlesource.com/c/go/+/638416
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Joseph Tsai <joetsai@digital-static.net>

src/encoding/json/decode.go

index 98102291ab803632b3a62890da9f3f525e6c0e9b..3b398c9fc323f515d24731f2f4af561d0b0b7196 100644 (file)
@@ -113,9 +113,6 @@ func Unmarshal(data []byte, v any) error {
 // The input can be assumed to be a valid encoding of
 // a JSON value. UnmarshalJSON must copy the JSON data
 // if it wishes to retain the data after returning.
-//
-// By convention, to approximate the behavior of [Unmarshal] itself,
-// Unmarshalers implement UnmarshalJSON([]byte("null")) as a no-op.
 type Unmarshaler interface {
        UnmarshalJSON([]byte) error
 }