ホームページ > バックエンド開発 > C++ > JsonElement を System.Text.Json の厳密に型指定されたオブジェクトに変換する方法

JsonElement を System.Text.Json の厳密に型指定されたオブジェクトに変換する方法

Linda Hamilton
リリース: 2025-01-08 15:37:46
オリジナル
1028 人が閲覧しました

How to Convert JsonElement to a Strongly-Typed Object in System.Text.Json?

System.Text.Json.JsonElement

の ToObject 相当メソッド

コンセプト

.NET Core 3 では、Json.NET ライブラリは ToObject メソッドを提供し、JToken オブジェクトを厳密に型指定されたクラスに変換できるようにします。この記事では、System.Text.Json の JsonElement オブジェクトを逆シリアル化する同等の方法について説明します。

解決策

.NET 6 以降:

JsonSerializer には、JsonElement オブジェクトと JsonDocument オブジェクトから直接逆シリアル化するための拡張メソッドが追加されました:

<code class="language-csharp">public static TValue? Deserialize<TValue>(this JsonDocument document, JsonSerializerOptions? options = null);
public static TValue? Deserialize<TValue>(this JsonElement element, JsonSerializerOptions? options = null);</code>
ログイン後にコピー

.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);
}</code>
ログイン後にコピー

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

注意

  • JsonDocument オブジェクトを解放してメモリ リソースを解放します。
  • 同様の逆シリアル化機能のために、.NET 6 の JsonNode に拡張メソッドが追加されました。
  • この回避策は、不必要な文字列変換を回避するため、パフォーマンスが向上します。

以上がJsonElement を System.Text.Json の厳密に型指定されたオブジェクトに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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