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