public static void Main() { Employee tyler = new() { Name = "Tyler Stein" }; Employee adrian = new() { Name = "Adrian King" }; Company contoso = new() { Name = "Contoso", Supervisor = tyler }; tyler.DirectReports = new List <Employee> { adrian }; adrian.Manager = tyler; tyler.Company = contoso; adrian.Company = contoso; // <CallSerializer> var options = new JsonSerializerOptions(); options.Converters.Add(new CompanyConverter()); var myReferenceHandler = new MyReferenceHandler(); options.ReferenceHandler = myReferenceHandler; options.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull; options.WriteIndented = true; string str = JsonSerializer.Serialize(tyler, options); // Reset after serializing to avoid out of bounds memory growth in the resolver. myReferenceHandler.Reset(); // </CallSerializer> Console.WriteLine(str); } } }
public static void Main() { Employee tyler = new() { Name = "Tyler Stein" }; Employee adrian = new() { Name = "Adrian King" }; tyler.DirectReports = new List <Employee> { adrian }; adrian.Manager = tyler; var employees = new List <Employee> { tyler, adrian }; SerializeEmployees(employees); } static void SerializeEmployees(List <Employee> employees) { // <CallSerializer> var options = new JsonSerializerOptions(); options.WriteIndented = true; var myReferenceHandler = new MyReferenceHandler(); options.ReferenceHandler = myReferenceHandler; string json; foreach (Employee emp in employees) { json = JsonSerializer.Serialize(emp, options); DoSomething(json); } // Reset after serializing to avoid out of bounds memory growth in the resolver. myReferenceHandler.Reset(); // </CallSerializer> }