in model/marshal_fastjson.go [662:757]
func (v *Span) MarshalFastJSON(w *fastjson.Writer) error {
var firstErr error
w.RawByte('{')
w.RawString("\"duration\":")
w.Float64(v.Duration)
w.RawString(",\"id\":")
if err := v.ID.MarshalFastJSON(w); err != nil && firstErr == nil {
firstErr = err
}
w.RawString(",\"name\":")
w.String(v.Name)
w.RawString(",\"timestamp\":")
if err := v.Timestamp.MarshalFastJSON(w); err != nil && firstErr == nil {
firstErr = err
}
w.RawString(",\"trace_id\":")
if err := v.TraceID.MarshalFastJSON(w); err != nil && firstErr == nil {
firstErr = err
}
w.RawString(",\"type\":")
w.String(v.Type)
if v.Action != "" {
w.RawString(",\"action\":")
w.String(v.Action)
}
if v.Composite != nil {
w.RawString(",\"composite\":")
if err := v.Composite.MarshalFastJSON(w); err != nil && firstErr == nil {
firstErr = err
}
}
if v.Context != nil {
w.RawString(",\"context\":")
if err := v.Context.MarshalFastJSON(w); err != nil && firstErr == nil {
firstErr = err
}
}
if v.Links != nil {
w.RawString(",\"links\":")
w.RawByte('[')
for i, v := range v.Links {
if i != 0 {
w.RawByte(',')
}
if err := v.MarshalFastJSON(w); err != nil && firstErr == nil {
firstErr = err
}
}
w.RawByte(']')
}
if v.OTel != nil {
w.RawString(",\"otel\":")
if err := v.OTel.MarshalFastJSON(w); err != nil && firstErr == nil {
firstErr = err
}
}
if v.Outcome != "" {
w.RawString(",\"outcome\":")
w.String(v.Outcome)
}
if !v.ParentID.isZero() {
w.RawString(",\"parent_id\":")
if err := v.ParentID.MarshalFastJSON(w); err != nil && firstErr == nil {
firstErr = err
}
}
if v.SampleRate != nil {
w.RawString(",\"sample_rate\":")
w.Float64(*v.SampleRate)
}
if v.Stacktrace != nil {
w.RawString(",\"stacktrace\":")
w.RawByte('[')
for i, v := range v.Stacktrace {
if i != 0 {
w.RawByte(',')
}
if err := v.MarshalFastJSON(w); err != nil && firstErr == nil {
firstErr = err
}
}
w.RawByte(']')
}
if v.Subtype != "" {
w.RawString(",\"subtype\":")
w.String(v.Subtype)
}
if !v.TransactionID.isZero() {
w.RawString(",\"transaction_id\":")
if err := v.TransactionID.MarshalFastJSON(w); err != nil && firstErr == nil {
firstErr = err
}
}
w.RawByte('}')
return firstErr
}