mirror of
https://github.com/golang/go
synced 2024-11-20 06:04:52 -07: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
@ -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…
Reference in New Issue
Block a user