なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

System.Text.Json でフィールドもシリアライズ・デシリアライズしたい

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}

便利。