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{}
|
Interface interface{}
|
||||||
PInterface *interface{}
|
PInterface *interface{}
|
||||||
|
|
||||||
|
unexported int
|
||||||
}
|
}
|
||||||
|
|
||||||
type Small struct {
|
type Small struct {
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ import (
|
||||||
// a member of the object. By default the object's key name is the
|
// 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
|
// struct field name converted to lower case. If the struct field
|
||||||
// has a tag, that tag will be used as the name instead.
|
// has a tag, that tag will be used as the name instead.
|
||||||
|
// Only exported fields will be encoded.
|
||||||
//
|
//
|
||||||
// Map values encode as JSON objects.
|
// Map values encode as JSON objects.
|
||||||
// The map's key type must be string; the object keys are used directly
|
// 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('{')
|
e.WriteByte('{')
|
||||||
t := v.Type().(*reflect.StructType)
|
t := v.Type().(*reflect.StructType)
|
||||||
n := v.NumField()
|
n := v.NumField()
|
||||||
|
first := true
|
||||||
for i := 0; i < n; i++ {
|
for i := 0; i < n; i++ {
|
||||||
if i > 0 {
|
f := t.Field(i)
|
||||||
|
if f.PkgPath != "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if first {
|
||||||
|
first = false
|
||||||
|
} else {
|
||||||
e.WriteByte(',')
|
e.WriteByte(',')
|
||||||
}
|
}
|
||||||
f := t.Field(i)
|
|
||||||
if f.Tag != "" {
|
if f.Tag != "" {
|
||||||
e.string(f.Tag)
|
e.string(f.Tag)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue