Documentation
¶
Index ¶
- type Builder
- func (e *Builder) Any(v interface{})
- func (e *Builder) AnyProp(k string, v interface{})
- func (e *Builder) Blob(data []byte)
- func (e *Builder) BlobProp(k string, v []byte)
- func (e *Builder) Bool(v bool)
- func (e *Builder) BoolProp(k string, v bool)
- func (e *Builder) End(kind byte)
- func (e *Builder) EndArray()
- func (e *Builder) EndObject()
- func (e *Builder) Float(f float64, bits int)
- func (e *Builder) FloatProp(k string, f float64, bits int)
- func (e *Builder) InObject() bool
- func (e *Builder) Int(v int64, bitsize int)
- func (e *Builder) IntProp(k string, v int64, bitsize int)
- func (e *Builder) Key(k string)
- func (e *Builder) KeyBytes(k []byte)
- func (e *Builder) Null()
- func (e *Builder) NullProp(k string)
- func (e *Builder) Raw(b []byte)
- func (e *Builder) RawKey(k []byte)
- func (e *Builder) Reset()
- func (e *Builder) Start(kind byte)
- func (e *Builder) StartArray()
- func (e *Builder) StartArrayProp(k string)
- func (e *Builder) StartObject()
- func (e *Builder) StartObjectProp(k string)
- func (e *Builder) Str(s string)
- func (e *Builder) StrBytes(s []byte)
- func (e *Builder) StrProp(k, v string)
- func (e *Builder) Uint(v uint64, bitsize int)
- func (e *Builder) UintProp(k string, v uint64, bitsize int)
- func (e *Builder) WriteJsonString(s []byte)
- type Reader
- func (c *Reader) ArrayStart() bool
- func (c *Reader) Blob() []byte
- func (c *Reader) Bool() bool
- func (c *Reader) Discard()
- func (c *Reader) Err() error
- func (c *Reader) Float(bitsize int) float64
- func (c *Reader) Int(bitsize int) int64
- func (c *Reader) Key() string
- func (c *Reader) More() bool
- func (c *Reader) ObjectStart() bool
- func (c *Reader) Reset(r io.Reader)
- func (c *Reader) ResetBytes(data []byte)
- func (c *Reader) Str() string
- func (c *Reader) Uint(bitsize int) uint64
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Builder ¶
type Builder struct {
bytes.Buffer // output JSON
// Err holds the first error encountered, if any
Err error
// pretty-printing
Indent string
KeyTerm []byte // key terminator. Defaults to ":"
// contains filtered or unexported fields
}
Builder is a low-level JSON builder with a caller-driven API. It can generatet both compact JSON as well as pretty-printed output with almost zero overhead.
Example ¶
package main
import (
// "testing"
"fmt"
"time"
)
type ExampleVec3 struct {
x, y, z float64
}
func (v ExampleVec3) BuildJSON(b *Builder) {
b.StartArray()
b.Float(v.x, 64)
b.Float(v.y, 64)
b.Float(v.z, 64)
b.EndArray()
}
func main() {
var b Builder
b.Indent = " " // enable pretty-printing
b.StartObject()
b.Key("subject")
b.Str("Fun")
b.Key("labels")
b.StartArray()
b.Str("casual")
b.Str("message")
b.EndArray()
// Add base-64 encoded data
// data, _ := ioutil.ReadFile("builder_test.go")
data := []byte("hello world")
b.StartObjectProp("attachment")
b.IntProp("size", int64(len(data)), 64)
b.StrProp("type", "text/plain")
b.BlobProp("data", data)
b.EndObject()
b.BoolProp("isUnread", true)
b.FloatProp("score", 0.41, 64)
b.AnyProp("any.bool", true)
b.AnyProp("any.int8", int8(123))
b.AnyProp("any.uint8", uint8(123))
b.AnyProp("any.int16", int16(123))
b.AnyProp("any.uint16", uint16(123))
b.AnyProp("any.int32", int32(123))
b.AnyProp("any.uint32", uint32(123))
b.AnyProp("any.int64", int64(123))
b.AnyProp("any.uint64", uint64(123))
b.AnyProp("any.float32", float32(1.23))
b.AnyProp("any.float64", float64(1.23))
b.AnyProp("any.string", "ett två tre")
b.AnyProp("any.blob", []byte("un dos tres"))
b.AnyProp("any.time", time.Unix(123, 0)) // uses MarshalJSON or encoding/json.Encoder
b.AnyProp("any.vec3", ExampleVec3{1.2, 3.4, 5.6})
b.EndObject()
fmt.Println(string(b.Bytes()))
}
Output: { "subject": "Fun", "labels": [ "casual", "message" ], "attachment": { "size": "11", "type": "text/plain", "data": "aGVsbG8gd29ybGQ" }, "isUnread": true, "score": 0.41, "any.bool": true, "any.int8": 123, "any.uint8": 123, "any.int16": 123, "any.uint16": 123, "any.int32": 123, "any.uint32": 123, "any.int64": "123", "any.uint64": "123", "any.float32": 1.23, "any.float64": 1.23, "any.string": "ett två tre", "any.blob": "dW4gZG9zIHRyZXM", "any.time": "1969-12-31T16:02:03-08:00", "any.vec3": [ 1.2, 3.4, 5.6 ] }
func (*Builder) End ¶
End a dictionary (kind='}') or list (kind=']') If the builder is not inside an object, this method panics.
func (*Builder) EndArray ¶
func (e *Builder) EndArray()
EndArray ends a dictionary. Equivalent to End(']')
func (*Builder) EndObject ¶
func (e *Builder) EndObject()
EndObject ends a dictionary. Equivalent to End('}')
func (*Builder) RawKey ¶ added in v0.1.2
RawKey writes k verbatim without quotes and without escaping. Thus, k is expected to be a valid JSON key already.
func (*Builder) Reset ¶
func (e *Builder) Reset()
Reset resets the Builder so it can be reused. Does not reset Indent. If the ByteWriter has a Reset() method, that method is called as well, which is the case when the default bytes.Buffer is being used.
func (*Builder) StartArray ¶
func (e *Builder) StartArray()
StartArray starts a dictionary. Equivalent to Start('[')
func (*Builder) StartArrayProp ¶
func (*Builder) StartObject ¶
func (e *Builder) StartObject()
StartObject starts a dictionary. Equivalent to Start('{')
func (*Builder) StartObjectProp ¶
func (*Builder) WriteJsonString ¶
WriteJsonString writes a string, quoting and escaping it as needed. This is a lower-level primitive; it's not aware of indentation, commas, etc.
type Reader ¶
type Reader struct {
// contains filtered or unexported fields
}