From: Joe Tsai Date: Tue, 3 Feb 2026 01:52:37 +0000 (-0800) Subject: encoding/json/v2: remove `unknown` tag option and DiscardUnknownMembers X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c9cbeb0a1b08a9830a3d2d4abe0c2108e52f7647;p=gostls13.git encoding/json/v2: remove `unknown` tag option and DiscardUnknownMembers WARNING: This commit contains breaking changes for those already using GOEXPERIMENT=jsonv2. This removes support for the `unknown` tag option and the DiscardUnknownMembers marshal option. The `unknown` tag option semantics are a bit too subtle even for experienced Go programmers to understand. Remove support for it. The exact same feature (or something similar) can be added back into a future release of json/v2. We already support the `inline` tag option, which can handle most cases of what someone might want to do with unknown fields (such as preserve them). Fixes #77271 Updates #76444 Change-Id: I875952f0755e58aac4c571869b2cdb56e75cfda9 Reviewed-on: https://go-review.googlesource.com/c/go/+/741320 Reviewed-by: Damien Neil LUCI-TryBot-Result: Go LUCI Reviewed-by: Michael Pratt --- diff --git a/src/encoding/json/internal/jsonflags/flags.go b/src/encoding/json/internal/jsonflags/flags.go index a53dfe7985..3a581a08df 100644 --- a/src/encoding/json/internal/jsonflags/flags.go +++ b/src/encoding/json/internal/jsonflags/flags.go @@ -120,7 +120,6 @@ const ( FormatNilSliceAsNull // marshal only OmitZeroStructFields // marshal only MatchCaseInsensitiveNames // marshal or unmarshal - DiscardUnknownMembers // marshal only RejectUnknownMembers // unmarshal only Marshalers // marshal only; non-boolean flag Unmarshalers // unmarshal only; non-boolean flag @@ -151,7 +150,7 @@ const ( ) // bitsUsed is the number of bits used in the 64-bit boolean flags -const bitsUsed = 42 +const bitsUsed = 41 // Static compile check that bitsUsed and maxArshalV1Flag are in sync. const _ = uint64((1<