aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/json/encode.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/encoding/json/encode.go')
-rw-r--r--src/encoding/json/encode.go16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/encoding/json/encode.go b/src/encoding/json/encode.go
index ec49ceb93e..7e5e209b4f 100644
--- a/src/encoding/json/encode.go
+++ b/src/encoding/json/encode.go
@@ -628,8 +628,7 @@ type structEncoder struct {
}
func (se structEncoder) encode(e *encodeState, v reflect.Value, opts encOpts) {
- e.WriteByte('{')
- first := true
+ next := byte('{')
for i := range se.fields {
f := &se.fields[i]
@@ -649,11 +648,8 @@ func (se structEncoder) encode(e *encodeState, v reflect.Value, opts encOpts) {
if f.omitEmpty && isEmptyValue(fv) {
continue
}
- if first {
- first = false
- } else {
- e.WriteByte(',')
- }
+ e.WriteByte(next)
+ next = ','
if opts.escapeHTML {
e.WriteString(f.nameEscHTML)
} else {
@@ -662,7 +658,11 @@ func (se structEncoder) encode(e *encodeState, v reflect.Value, opts encOpts) {
opts.quoted = f.quoted
f.encoder(e, fv, opts)
}
- e.WriteByte('}')
+ if next == '{' {
+ e.WriteString("{}")
+ } else {
+ e.WriteByte('}')
+ }
}
func newStructEncoder(t reflect.Type) encoderFunc {