概览

JSON Encoder
Pool
var _jsonPool = sync.Pool{New: func() interface{} {return &jsonEncoder{}}}
获取 jsonEncoder 对象
func getJSONEncoder() *jsonEncoder {return _jsonPool.Get().(*jsonEncoder)}
释放 jsonEncoder 对象
func putJSONEncoder(enc *jsonEncoder) {if enc.reflectBuf != nil {enc.reflectBuf.Free()}enc.EncoderConfig = nilenc.buf = nilenc.spaced = falseenc.openNamespaces = 0enc.reflectBuf = nilenc.reflectEnc = nil_jsonPool.Put(enc)}
addKey
生成 json 格式的 key,避免使用 json.Marshal 而引入反射,降低性能
func (enc *jsonEncoder) addKey(key string) {enc.addElementSeparator()enc.buf.AppendByte('"')enc.safeAddString(key)enc.buf.AppendByte('"')enc.buf.AppendByte(':')if enc.spaced {enc.buf.AppendByte(' ')}}
