System.Text.Json
.NET Core 3.0にはSystem.Text.Json
ビルトインが付属しているため、サードパーティのライブラリを使用せずに JSON をデシリアライズ/シリアライズできます。
クラスをJSON文字列にシリアル化するには:
var json = JsonSerializer.Serialize(order);
JSONを強く型付けされたクラスに逆シリアル化するには:
var order = JsonSerializer.Deserialize<Order>(json);
したがって、以下のようなクラスがある場合:
public class Order
{
public int Id { get; set; }
public string OrderNumber { get; set; }
public decimal Balance { get; set; }
public DateTime Opened { get; set; }
}
var json = JsonSerializer.Serialize(order);
// creates JSON ==>
{
"id": 123456,
"orderNumber": "ABC-123-456",
"balance": 9876.54,
"opened": "2019-10-21T23:47:16.85",
};
var order = JsonSerializer.Deserialize<Order>(json);
// ==> creates the above class
注意すべきことの1つは、独自のコードを使用する場合、 JSONプロパティを自動的に処理System.Text.Json
しないことです。camelCase
こと(ただし、MVC / WebAPIリクエストとモデルバインダー)。
これを解決するにJsonSerializerOptions
は、パラメーターとして渡す必要があります。
JsonSerializerOptions options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // set camelCase
WriteIndented = true // write pretty json
};
// pass options to serializer
var json = JsonSerializer.Serialize(order, options);
// pass options to deserializer
var order = JsonSerializer.Deserialize<Order>(json, options);
System.Text.Jsonは、.Net Frameworkおよび.Net StandardでもNu-getパッケージSystem.Text.Jsonとして利用できます。