導入
シリアライズはデシリアライズの逆——C#オブジェクトをJSON文字列に変換する操作です。APIへデータを送るときに使います。
図解
flowchart LR
O["User オブジェクト<br/>Name=Hanako, Age=25"] -->|Serialize| J["JSON文字列<br/>{"Name":"Hanako","Age":25}"]
サンプル
var user = new User("Hanako", 25);
// C#オブジェクト → JSON文字列
string json = JsonSerializer.Serialize(user);
Console.WriteLine(json); // {"Name":"Hanako","Age":25}
// 整形(人が読みやすく)するオプション
var pretty = JsonSerializer.Serialize(user, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(pretty);
// {
// "Name": "Hanako",
// "Age": 25
// }
record User(string Name, int Age);
JsonSerializer.Serialize(オブジェクト)でオブジェクト→JSON文字列WriteIndented = trueで人が読みやすく整形できる- APIへPOSTするデータの作成などに使う
- 既定では日本語などASCII以外の文字は
\uXXXX形式(例: マウス →\u30DE\u30A6\u30B9)にエスケープされる。JSONとしては正しく、読み込む側は元に戻せる。そのまま日本語で出したいときはEncoder = JavaScriptEncoder.UnsafeRelaxedJsonEscapingをオプションに指定する
演習
var product = new Product("Mouse", 2980);
// TODO: product を JSON文字列にシリアライズして出力してください
// (期待: {"Name":"Mouse","Price":2980})
___
record Product(string Name, int Price);
- 期待される出力:
{"Name":"Mouse","Price":2980}
ヒント1を見る
JsonSerializer.Serialize(product)
ヒント2を見る
Console.WriteLine(JsonSerializer.Serialize(product));
まとめ
JsonSerializer.Serializeでオブジェクト→JSONWriteIndentedで整形出力- 送信データの作成に使う
次回: データを送る・更新する・消す「POST/PUT/DELETE」です。