func()

in model/modeljson/internal/marshal_fastjson.go [3335:3557]


func (v *Transaction) MarshalFastJSON(w *fastjson.Writer) error {
	var firstErr error
	w.RawByte('{')
	first := true
	if v.Custom != nil {
		const prefix = ",\"custom\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		if err := v.Custom.MarshalFastJSON(w); err != nil && firstErr == nil {
			firstErr = err
		}
	}
	if v.DroppedSpansStats != nil {
		const prefix = ",\"dropped_spans_stats\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		w.RawByte('[')
		for i, v := range v.DroppedSpansStats {
			if i != 0 {
				w.RawByte(',')
			}
			if err := v.MarshalFastJSON(w); err != nil && firstErr == nil {
				firstErr = err
			}
		}
		w.RawByte(']')
	}
	if !v.DurationHistogram.isZero() {
		const prefix = ",\"duration.histogram\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		if err := v.DurationHistogram.MarshalFastJSON(w); err != nil && firstErr == nil {
			firstErr = err
		}
	}
	if !v.DurationSummary.isZero() {
		const prefix = ",\"duration.summary\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		if err := v.DurationSummary.MarshalFastJSON(w); err != nil && firstErr == nil {
			firstErr = err
		}
	}
	if v.UserExperience != nil {
		const prefix = ",\"experience\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		if err := v.UserExperience.MarshalFastJSON(w); err != nil && firstErr == nil {
			firstErr = err
		}
	}
	if v.ID != "" {
		const prefix = ",\"id\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		w.String(v.ID)
	}
	if v.Marks != nil {
		const prefix = ",\"marks\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		w.RawByte('{')
		{
			first := true
			for k, v := range v.Marks {
				if first {
					first = false
				} else {
					w.RawByte(',')
				}
				w.String(k)
				w.RawByte(':')
				w.RawByte('{')
				{
					first := true
					for k, v := range v {
						if first {
							first = false
						} else {
							w.RawByte(',')
						}
						w.String(k)
						w.RawByte(':')
						w.Float64(v)
					}
				}
				w.RawByte('}')
			}
		}
		w.RawByte('}')
	}
	if v.Message != nil {
		const prefix = ",\"message\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		if err := v.Message.MarshalFastJSON(w); err != nil && firstErr == nil {
			firstErr = err
		}
	}
	if v.Name != "" {
		const prefix = ",\"name\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		w.String(v.Name)
	}
	if v.ProfilerStackTraceIds != nil {
		const prefix = ",\"profiler_stack_trace_ids\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		w.RawByte('[')
		for i, v := range v.ProfilerStackTraceIds {
			if i != 0 {
				w.RawByte(',')
			}
			w.String(v)
		}
		w.RawByte(']')
	}
	if v.RepresentativeCount != 0 {
		const prefix = ",\"representative_count\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		w.Float64(v.RepresentativeCount)
	}
	if v.Result != "" {
		const prefix = ",\"result\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		w.String(v.Result)
	}
	if v.Root != false {
		const prefix = ",\"root\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		w.Bool(v.Root)
	}
	if v.Sampled != false {
		const prefix = ",\"sampled\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		w.Bool(v.Sampled)
	}
	if !v.SpanCount.isZero() {
		const prefix = ",\"span_count\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		if err := v.SpanCount.MarshalFastJSON(w); err != nil && firstErr == nil {
			firstErr = err
		}
	}
	if v.Type != "" {
		const prefix = ",\"type\":"
		if first {
			first = false
			w.RawString(prefix[1:])
		} else {
			w.RawString(prefix)
		}
		w.String(v.Type)
	}
	w.RawByte('}')
	return firstErr
}