Dans .NET Core 3, la bibliothèque Json.NET fournit la méthode ToObject, permettant de convertir des objets JToken en classes fortement typées. Cet article explore la méthode équivalente de désérialisation des objets JsonElement dans System.Text.Json.
Dans .NET 6 et supérieur :
JsonSerializer a ajouté des méthodes d'extension pour désérialiser directement à partir des objets JsonElement et 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>
Dans .NET 5 et versions antérieures :
Il existe une solution de contournement qui peut être utilisée pour améliorer les performances :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!