public void SerializeException(Exception exception, ExceptionToJsonSerializerOptions options, IJsonWriter writer) { writer.Write(exception.Message, "message"); if (options.IncludeType) { writer.Write(exception.GetType().Name, "type"); } if (options.IncludeStackTrace) { var lines = (exception.StackTrace ?? String.Empty).Split('\n').Select(x => x.Trim()).ToArray(); writer.WriteArray(lines, "stack", line => { writer.Write(line); }); } if (options.IncludeInnerExceptions) { if (exception.InnerException != null) { writer.Write("inner", delegate { this.SerializeException(exception.InnerException, options, writer); }); } else { writer.WriteNull("inner"); } } }
public String RenderToJson(Exception exception, ExceptionToJsonSerializerOptions options) { var builder = new StringBuilder(); using (var writer = new JsonWriter(builder.ToJsonTextWriter())) { writer.Write(delegate { this.SerializeException(exception, options, writer); }); } return(builder.ToString()); }