ホームページ > バックエンド開発 > C++ > .NET で System.Text.Json を使用してクラス フィールドをシリアル化する方法

.NET で System.Text.Json を使用してクラス フィールドをシリアル化する方法

Mary-Kate Olsen
リリース: 2025-01-14 06:21:44
オリジナル
700 人が閲覧しました

How to Serialize Class Fields Using System.Text.Json in .NET?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート