mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
json: do not Marshal unexported struct fields
R=r, cw, niemeyer, rsc CC=golang-dev https://golang.org/cl/3952041
This commit is contained in:
parent
a41d85498e
commit
09d4bcf0f7
2 changed files with 11 additions and 2 deletions
|
|
@ -270,6 +270,8 @@ type All struct {
|
|||
|
||||
Interface interface{}
|
||||
PInterface *interface{}
|
||||
|
||||
unexported int
|
||||
}
|
||||
|
||||
type Small struct {
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ import (
|
|||
// a member of the object. By default the object's key name is the
|
||||
// struct field name converted to lower case. If the struct field
|
||||
// has a tag, that tag will be used as the name instead.
|
||||
// Only exported fields will be encoded.
|
||||
//
|
||||
// Map values encode as JSON objects.
|
||||
// The map's key type must be string; the object keys are used directly
|
||||
|
|
@ -219,11 +220,17 @@ func (e *encodeState) reflectValue(v reflect.Value) {
|
|||
e.WriteByte('{')
|
||||
t := v.Type().(*reflect.StructType)
|
||||
n := v.NumField()
|
||||
first := true
|
||||
for i := 0; i < n; i++ {
|
||||
if i > 0 {
|
||||
f := t.Field(i)
|
||||
if f.PkgPath != "" {
|
||||
continue
|
||||
}
|
||||
if first {
|
||||
first = false
|
||||
} else {
|
||||
e.WriteByte(',')
|
||||
}
|
||||
f := t.Field(i)
|
||||
if f.Tag != "" {
|
||||
e.string(f.Tag)
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue