1package json
2
3import (
4 "bytes"
5)
6
7// Object represents the encoding of a JSON Object type
8type Object struct {
9 w *bytes.Buffer
10 writeComma bool
11 scratch *[]byte
12}
13
14func newObject(w *bytes.Buffer, scratch *[]byte) *Object {
15 w.WriteRune(leftBrace)
16 return &Object{w: w, scratch: scratch}
17}
18
19func (o *Object) writeKey(key string) {
20 escapeStringBytes(o.w, []byte(key))
21 o.w.WriteRune(colon)
22}
23
24// Key adds the given named key to the JSON object.
25// Returns a Value encoder that should be used to encode
26// a JSON value type.
27func (o *Object) Key(name string) Value {
28 if o.writeComma {
29 o.w.WriteRune(comma)
30 } else {
31 o.writeComma = true
32 }
33 o.writeKey(name)
34 return newValue(o.w, o.scratch)
35}
36
37// Close encodes the end of the JSON Object
38func (o *Object) Close() {
39 o.w.WriteRune(rightBrace)
40}