1
0
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:
Andrew Gerrand 2011-01-12 11:59:33 +11:00
parent a41d85498e
commit 09d4bcf0f7
2 changed files with 11 additions and 2 deletions

View File

@ -270,6 +270,8 @@ type All struct {
Interface interface{}
PInterface *interface{}
unexported int
}
type Small struct {

View File

@ -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 {