
JSONシリアライズ
System.Text.Json、JsonSerializer、custom converters、naming policies、null処理
1モダンな .NET における JSON シリアライズの主要な namespace は何ですか?
モダンな .NET における JSON シリアライズの主要な namespace は何ですか?
回答
System.Text.Json は .NET Core 3.0 以降における JSON シリアライズの公式 namespace です。よりパフォーマンスが高く、フレームワークに統合され、モダンなシナリオに最適化されているため、Newtonsoft.Json (Json.NET) を段階的に置き換えています。Newtonsoft.Json は後方互換性や System.Text.Json で利用できない高度な機能のために NuGet で引き続き利用可能です。
2C# オブジェクトを JSON 文字列にシリアライズするにはどのメソッドを使用しますか?
C# オブジェクトを JSON 文字列にシリアライズするにはどのメソッドを使用しますか?
回答
JsonSerializer.Serialize は C# オブジェクトを JSON 文字列に変換します。この静的メソッドはシリアライズするオブジェクトと、動作をカスタマイズするための JsonSerializerOptions(任意)を受け取ります。Serialize は string を返し、SerializeToUtf8Bytes は string の割り当てを回避してパフォーマンスを最適化するために byte[] を返します。
3JSON プロパティに対する System.Text.Json のデフォルトの命名規則は何ですか?
JSON プロパティに対する System.Text.Json のデフォルトの命名規則は何ですか?
回答
デフォルトでは、System.Text.Json は C# プロパティ名を正確に保持します(大文字小文字を区別する PascalCase)。C# プロパティが UserName という名前の場合、JSON には UserName が含まれます。camelCase(userName)を得るには、JsonSerializerOptions に PropertyNamingPolicy = JsonNamingPolicy.CamelCase を設定する必要があります。これはデフォルトで camelCase を使用する Newtonsoft.Json とは異なります。
JSON 文字列を型付きの C# オブジェクトにデシリアライズするにはどうしますか?
JSON シリアライズ時にプロパティを無視するにはどの属性を使用しますか?
+17 面接問題