在 .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中文網其他相關文章!