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