Field.MarshalJSON
calls Encoder.Encode
to marshal the Field
value. Encoder.Encode
calls Field.MarshalJSON
to marshal the Field
. This repeats until the stack space is exceeded.
Break the recursion by declaring a new type without the MarshalJSON
method. Convert the Field
value to that new type and encode that value:
type x Field
if err := encoder.Encode(x(f)); err != nil {
return nil, err
}