// MarshalEasyJSON does JSON marshaling using easyjson interface. func (v Int32) MarshalEasyJSON(w *jwriter.Writer) { if v.Defined { w.Int32(v.V) } else { w.RawString("null") } }
// MarshalEasyJSON does JSON marshaling using easyjson interface. func (v Uint64) MarshalEasyJSON(w *jwriter.Writer) { if v.Defined { w.Uint64(v.V) } else { w.RawString("null") } }
// MarshalEasyJSON does JSON marshaling using easyjson interface. func (v Optional) MarshalEasyJSON(w *jwriter.Writer) { if v.Defined { w.Optional(v.V) } else { w.RawString("null") } }
// MarshalToHTTPResponseWriter sets Content-Length and Content-Type headers for the // http.ResponseWriter, and send the data to the writer. started will be equal to // false if an error occurred before any http.ResponseWriter methods were actually // invoked (in this case a 500 reply is possible). func MarshalToHTTPResponseWriter(v Marshaler, w http.ResponseWriter) (started bool, written int, err error) { jw := jwriter.Writer{} v.MarshalEasyJSON(&jw) if jw.Error != nil { return false, 0, jw.Error } w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Length", strconv.Itoa(jw.Size())) started = true written, err = jw.DumpTo(w) return }
func BenchmarkEJ_Marshal_M_ToWriter(b *testing.B) { var l int64 out := &DummyWriter{} for i := 0; i < b.N; i++ { w := jwriter.Writer{} largeStructData.MarshalEasyJSON(&w) if w.Error != nil { b.Error(w.Error) } l = int64(w.Size()) w.DumpTo(out) } b.SetBytes(l) }
func BenchmarkEJ_Marshal_L_ToWriter_Parallel(b *testing.B) { out := &DummyWriter{} b.RunParallel(func(pb *testing.PB) { var l int64 for pb.Next() { w := jwriter.Writer{} xlStructData.MarshalEasyJSON(&w) if w.Error != nil { b.Error(w.Error) } l = int64(w.Size()) w.DumpTo(out) } if l > 0 { b.SetBytes(l) } }) }
// MarshalToWriter marshals the data to an io.Writer. func MarshalToWriter(v Marshaler, w io.Writer) (written int, err error) { jw := jwriter.Writer{} v.MarshalEasyJSON(&jw) return jw.DumpTo(w) }
// Marshal returns data as a single byte slice. Method is suboptimal as the data is likely to be copied // from a chain of smaller chunks. func Marshal(v Marshaler) ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.BuildBytes() }