System.Text.Json のクラス フィールドのシリアル化
.NET Core 3 の System.Text.Json では、オブジェクトのシリアル化と逆シリアル化のサポートが導入されています。ただし、このライブラリを使用してクラス フィールドをシリアル化しようとすると、問題が発生することがよくあります。
次の例を考えてみましょう:
<code>public class Car { public int Year { get; set; } // 正确序列化 public string Model; // 未序列化 }</code>
Car インスタンスをシリアル化しようとすると、生成された JSON 文字列には Model などのフィールドが含まれません。これは、.NET Core 3 の System.Text.Json がシリアル化されたフィールドをサポートしていないためです。
解決策
.NET 5 以降では、System.Text.Json にフィールドをシリアル化する機能があります。これは、フィールド サポートを有効にするか、シリアル化するフィールドを手動でマークすることによって実現できます。
フィールドのシリアル化を有効にする
シリアル化する場合、JsonSerializerOptions.IncludeFields プロパティを true に設定することで、フィールドのシリアル化を有効にできます。
<code>Car car = new Car { Model = "Fit", Year = 2008 }; // 启用字段序列化 var options = new JsonSerializerOptions { IncludeFields = true }; // 传递 "options" 进行序列化 var json = JsonSerializer.Serialize(car, options);</code>
シリアル化するフィールドをマークします
または、[JsonInclude] 属性を使用して、シリアル化する個々のフィールドをマークすることもできます。
<code>[JsonInclude] public string Model;</code>
2 つの方法の例
<code>public class Car { public int Year { get; set; } // 正确序列化 [JsonInclude] public string Model; } // 或 Car car = new Car { Model = "Fit", Year = 2008 }; var options = new JsonSerializerOptions { IncludeFields = true }; var json = JsonSerializer.Serialize(car, options);</code>
これらの手法を実装すると、シリアル化されたオブジェクトと逆シリアル化されたオブジェクトが、クラス フィールドの値も含めて、まったく同じ値を持つようになります。
以上が.NET で System.Text.Json を使用してクラス フィールドをシリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。