Commit 09d4bcf0 authored by Andrew Gerrand's avatar Andrew Gerrand

json: do not Marshal unexported struct fields

R=r, cw, niemeyer, rsc
CC=golang-dev
https://golang.org/cl/3952041
parent a41d8549
......@@ -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 {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment