2021-10-17 17:15:44 +00:00
|
|
|
package json
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
)
|
|
|
|
|
2022-06-09 10:30:53 +00:00
|
|
|
// Array represents the encoding of a JSON Array
|
2021-10-17 17:15:44 +00:00
|
|
|
type Array struct {
|
|
|
|
w *bytes.Buffer
|
|
|
|
writeComma bool
|
|
|
|
scratch *[]byte
|
|
|
|
}
|
|
|
|
|
|
|
|
func newArray(w *bytes.Buffer, scratch *[]byte) *Array {
|
|
|
|
w.WriteRune(leftBracket)
|
|
|
|
return &Array{w: w, scratch: scratch}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Value adds a new element to the JSON Array.
|
|
|
|
// Returns a Value type that is used to encode
|
|
|
|
// the array element.
|
|
|
|
func (a *Array) Value() Value {
|
|
|
|
if a.writeComma {
|
|
|
|
a.w.WriteRune(comma)
|
|
|
|
} else {
|
|
|
|
a.writeComma = true
|
|
|
|
}
|
|
|
|
|
|
|
|
return newValue(a.w, a.scratch)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Close encodes the end of the JSON Array
|
|
|
|
func (a *Array) Close() {
|
|
|
|
a.w.WriteRune(rightBracket)
|
|
|
|
}
|