System.Text.Json は、デフォルトでは下記クラスメンバーのウチ、フィールドはシリアライズ対象とならない。
class ClassA { public int Field; public int Property { get; set; } } var json = JsonSerializer.Serialize(new ClassA { Field = 1, Property = 2 }); // { "Property": 2 }
ただ、 .NET 5 以降、 .NET Framework 4.6.2 以降、 .NET Standard 2.0 では第2引数のオプションとして IncludeFields というのが追加されており、これを指定することでフィールドもシリアライズされるようになる。
var json = JsonSerializer.Serialize(new ClassA { Field = 1, Property = 2 }, new JsonSerializerOptions { IncludeFields = true }); // {"Property":2,"Field":1}
便利。