Controllerの中でごちゃごちゃやりがちだったので備忘録として残しておく。
InputModelクラスを定義
modelクラスを👇のように定義。
using System.Text.Json;
using System.Text.Json.Serialization;
namespace TestHogeHoge.Models
{
public class InputModel
{
[JsonPropertyName("id")]
public string Id { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonPropertyName("address")]
public string Address { get; set; }
public static InputModel Parse(string json)
{
return JsonSerializer.Deserialize<InputModel>(json);
}
}
}
各プロパティにはJson時のプロパティとParse先を定義してあげます。
System.Text.JsonのJsonSerializerを使ってデシリアライズしてあげるようにParse()を定義します。
リクエストするときのBodyは定義したModelに合わせてリクエストします。
👇例
{
"id": "111",
"name": "hogehoge",
"address": "hoge address"
}
実際に定義したクラスを使って書いてみると
RequestBody を取得したら StreamReader で読み込んで、
そのままInputModelクラスで定義したParseを実行させます。
var input = await new StreamReader({リクエストしたBody}, Encoding.UTF8).ReadToEndAsync();
var inputData = InputModel.Parse(input);