コード例 #1
0
        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);
        }
    }
}
コード例 #2
0
        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>
        }