The following throws an exception under .Net 5 / C# 9:
class Person
{
public Person() { }
public Person(int age, string name, Person[] data)
{
Age = age;
Name = name;
Data = data;
}
public int Age { get; set; }
public string Name { get; set; }
public Person[] Data { get; set; }
}
private void Test()
{
var p = new Person(99, "acrobat", new Person[]
{
new Person(1, "abc", null),
new Person(2, "xyz", null)
});
p = new Person(99, "acrobat", new Person[]
{
new Person(1, "abc", new Person[] { p }),
new Person(2, "xyz", null)
});
// throws exception
var result = JsonSerializer.Serialize(p);
var p2 = JsonSerializer.Deserialize<Person>(result);
}
The following throws an exception under .Net 5 / C# 9: