ホームページ >バックエンド開発 >C++ >JsonElement または JsonDocument を System.Text.Json のオブジェクトに変換する方法

JsonElement または JsonDocument を System.Text.Json のオブジェクトに変換する方法

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-08 15:47:41255ブラウズ

How to Convert a JsonElement or JsonDocument to an Object in System.Text.Json?

System.Text.Json の同等の関数

Json.NET フレームワークは、JToken をクラスに変換するための ToObject() メソッドを提供します。ただし、System.Text.Json には、このメソッドに直接相当するものはありません。

.NET 6 以降の回避策

.NET 6 では、オブジェクトを JsonElement または JsonDocument から直接逆シリアル化できる拡張メソッドが導入されました。これらのメソッドは次のとおりです:

<code class="language-csharp">public static TValue? Deserialize<TValue>(this JsonDocument document, JsonSerializerOptions? options = null);
public static object? Deserialize(this JsonDocument document, Type returnType, JsonSerializerOptions? options = null);</code>

例:

<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>

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。