]> Cypherpunks repositories - gostls13.git/commit
encoding/json: ignore embedded fields of pointers to unexported non-structs
authorJoe Tsai <joetsai@digital-static.net>
Fri, 21 Jul 2017 23:53:54 +0000 (16:53 -0700)
committerJoe Tsai <joetsai@google.com>
Sat, 22 Jul 2017 01:29:58 +0000 (01:29 +0000)
commitb81735924936291303559fd71dabaa1aa88f57c5
treef429ab3c9ed7612f1781bc1305635cb622230904
parent5f7a03e148b9a37f2c61f7d428abc6b360897a0c
encoding/json: ignore embedded fields of pointers to unexported non-structs

https://golang.org/cl/33773 fixes the JSON marshaler to avoid serializing
embedded fields on unexported types of non-struct types. However, Go allows
embedding pointer to types, so the check for whether the field is a non-struct
type must first dereference the pointer to get at the underlying type.

Furthermore, due to a edge-case in the behavior of StructField.PkgPath not
being a reliable indicator of whether the field is unexported (see #21122),
we use our own logic to determine whether the field is exported or not.

The logic in this CL may be simplified depending on what happens in #21122.

Fixes #21121
Updates #21122

Change-Id: I8dfd1cdfac8a87950df294a566fb96dfd04fd749
Reviewed-on: https://go-review.googlesource.com/50711
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/encoding/json/encode.go
src/encoding/json/encode_test.go