robocar-tools/vendor/github.com/aws/smithy-go/encoding/json/object.go

43 lines
841 B
Go
Raw Normal View History

package json
import (
"bytes"
)
// Object represents the encoding of a JSON Object type
type Object struct {
w *bytes.Buffer
writeComma bool
scratch *[]byte
}
func newObject(w *bytes.Buffer, scratch *[]byte) *Object {
w.WriteRune(leftBrace)
return &Object{w: w, scratch: scratch}
}
func (o *Object) writeKey(key string) {
o.w.WriteRune(quote)
o.w.Write([]byte(key))
o.w.WriteRune(quote)
o.w.WriteRune(colon)
}
// Key adds the given named key to the JSON object.
// Returns a Value encoder that should be used to encode
// a JSON value type.
func (o *Object) Key(name string) Value {
if o.writeComma {
o.w.WriteRune(comma)
} else {
o.writeComma = true
}
o.writeKey(name)
return newValue(o.w, o.scratch)
}
// Close encodes the end of the JSON Object
func (o *Object) Close() {
o.w.WriteRune(rightBrace)
}