C# - レコード(Record)型とJSONシリアライズ

C# 9 (.NET 5)からレコード型というのがある。
これは

public record User(string id, string password);

と書くと、下記と同じ感じになるような文法

public class User
{
    public string id { get; set; }
    public string password { get; set; }
}

当たり前だが、JSONシリアライズできる。
例えばSystem.Text.Jsonの場合は以下の通り。

# using System.Text.Json が必要
var user = new User("dekirukigasuru", "xxxyyyyzzzzwwww");
# シリアライズ
var ser = JsonSerializer.Serialize<User>(user);
# デシリアライズ
var des = JsonSerializer.Deserialize<User>(ser);

外部とやり取りする場合はSerializeToUtf8Bytesの方を使うのが良いと思われる。 (Utf8Stringみたいな話があったような気がしたが、どうなったのだろう)

以上、
単純なJSONを扱うときにせっせとクラスを書くことがあったので、楽になるなと思った次第。

ちなみに Visual Studio 2019 だと、JSONコピーした状態で

  • [編集] -> [形式を選択して貼り付け] -> [JSON をクラスとして貼り付ける]

とやると必要なクラスを自動生成してくれる。


See also