array.go raw

   1  package json
   2  
   3  import (
   4  	"bytes"
   5  )
   6  
   7  // Array represents the encoding of a JSON Array
   8  type Array struct {
   9  	w          *bytes.Buffer
  10  	writeComma bool
  11  	scratch    *[]byte
  12  }
  13  
  14  func newArray(w *bytes.Buffer, scratch *[]byte) *Array {
  15  	w.WriteRune(leftBracket)
  16  	return &Array{w: w, scratch: scratch}
  17  }
  18  
  19  // Value adds a new element to the JSON Array.
  20  // Returns a Value type that is used to encode
  21  // the array element.
  22  func (a *Array) Value() Value {
  23  	if a.writeComma {
  24  		a.w.WriteRune(comma)
  25  	} else {
  26  		a.writeComma = true
  27  	}
  28  
  29  	return newValue(a.w, a.scratch)
  30  }
  31  
  32  // Close encodes the end of the JSON Array
  33  func (a *Array) Close() {
  34  	a.w.WriteRune(rightBracket)
  35  }
  36