Newtonsoft.Json では、通常、ToObject()
メソッドは、JSON トークンを厳密に型指定されたオブジェクトに変換するために使用されます。ただし、System.Text.Json には、すぐに利用できる同等のメソッドはありません。
.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 以前の場合、中間バイト バッファーへの書き込みを伴う回避策を使用して、パフォーマンスを向上させることができます。
<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
に対して使用してください。 以上がJSON 要素を System.Text.Json のオブジェクトに逆シリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。