rksoftware

Visual Studio とか C# とかが好きです

System.Text.Json でプロパティ名の大文字小文字違いに対応する

System.Text.Json はプロパティ名の大文字小文字違いでが読めなくなります。

例えば次のようなクラスに

class Data
{
    public string? Content { get; set; }
}

次のような JSON では、Content プロパティに値が入りません。

{ "content":"test"}

そんな時は、JsonSerializerOptions を使います。

var json = @"{ ""content"":""test""}";
// Content に値が入らない
System.Console.WriteLine(System.Text.Json.JsonSerializer.Deserialize<Data>(json)?.Content);
// Content に値が入る
System.Console.WriteLine(System.Text.Json.JsonSerializer.Deserialize<Data>(json, new System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true })?.Content);

class Data
{
    public string? Content { get; set; }
}

いかがでしたか?

いかがでしたか?