ホームページ > バックエンド開発 > C++ > JSON 要素を System.Text.Json のオブジェクトに逆シリアル化する方法

JSON 要素を System.Text.Json のオブジェクトに逆シリアル化する方法

Linda Hamilton
リリース: 2025-01-08 15:42:40
オリジナル
1015 人が閲覧しました

How to Deserialize JSON Elements to Objects in System.Text.Json?

System.Text.Json 要素の逆シリアル化

Newtonsoft.Json では、通常、ToObject() メソッドは、JSON トークンを厳密に型指定されたオブジェクトに変換するために使用されます。ただし、System.Text.Json には、すぐに利用できる同等のメソッドはありません。

.NET 6 用のソリューション

.NET 6 以降では、JsonSerializer または JsonElement からオブジェクトを直接逆シリアル化するための拡張メソッドが JsonDocument に追加されました。これにより、次の構文が可能になります:

<code class="language-csharp">using var jDoc = JsonDocument.Parse(str);
var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<SomeClass>();</code>
ログイン後にコピー

.NET 5 以前のバージョンの回避策

.NET 5 以前の場合、中間バイト バッファーへの書き込みを伴う回避策を使用して、パフォーマンスを向上させることができます。

<code class="language-csharp">public static T ToObject<T>(this JsonElement element, JsonSerializerOptions options = null)
{
    var bufferWriter = new ArrayBufferWriter<byte>();
    using (var writer = new Utf8JsonWriter(bufferWriter))
        element.WriteTo(writer);
    return JsonSerializer.Deserialize<T>(bufferWriter.WrittenSpan, options);
}

public static T ToObject<T>(this JsonDocument document, JsonSerializerOptions options = null)
{
    if (document == null)
        throw new ArgumentNullException(nameof(document));
    return document.RootElement.ToObject<T>(options);
}</code>
ログイン後にコピー

手順:

  • JsonDocument ステートメントは解放可能であるため、忘れずに using に対して使用してください。
  • この回避策は、.NET Core 3.1 以降で利用できます。

以上がJSON 要素を System.Text.Json のオブジェクトに逆シリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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