Convertir efficacement JsonElement en un objet .NET
System.Text.Json, introduit dans .NET Core 3.0, offre une solution de gestion JSON hautes performances. Cependant, contrairement à Json.NET, il lui manquait un équivalent direct à la méthode ToObject pour une conversion pratique de JsonElement en objet .NET jusqu'à .NET 6.
.NET 6 et au-delà : conversion simplifiée
.NET 6 et les versions ultérieures fournissent des méthodes d'extension intégrées dans JsonSerializer qui rationalisent le processus :
<code class="language-csharp">public static TValue? Deserialize<TValue>(this JsonDocument document, JsonSerializerOptions? options = null); public static object? Deserialize(this JsonElement element, Type returnType, JsonSerializerOptions? options = null);</code>
Cela permet une conversion simple :
<code class="language-csharp">using var jDoc = JsonDocument.Parse(jsonString);
var myObject = jDoc.RootElement.GetProperty("propertyName").Deserialize<MyObjectType>();</code>.NET 5 et versions antérieures : une solution de contournement pratique
Pour les projets utilisant .NET 5 ou des versions antérieures, qui ne disposent pas de ces méthodes d'extension pratiques, une solution de contournement consiste à écrire le JsonElement dans un tampon d'octets, puis à le désérialiser à partir de ce tampon :
<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)
{
return document.RootElement.ToObject<T>(options);
}</code>Cette méthode évite la surcharge des conversions de chaînes ou de caractères, offrant une solution efficace pour les anciennes versions de .NET.

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!
Quelles sont les manières d'exécuter des scripts Shell ?
Quelle devise est le BTC ?
Tutoriel sur la désactivation du Centre de sécurité Windows 11
Le rôle des modèles conceptuels
Tri des tableaux JS : méthode sort()
Comment ouvrir les fichiers jar
Comment lire la base de données en HTML
Linux afficher les informations sur la version