Dans .NET Core 3 et supérieur, méthode pour convertir JsonElement en objet
Cet article explique comment convertir System.Text.Json en objet à l'aide de JsonElement dans .NET Core 3 et supérieur. System.Text.Json est la nouvelle bibliothèque de traitement JSON dans .NET Core 3.0 et elle ne contient pas d'équivalent de la méthode Json.NET dans ToObject() qui permet de convertir JToken en classe.
.NET 6 et supérieur :
À partir de .NET 6, JsonSerializer fournit des méthodes d'extension pour désérialiser directement depuis JsonElement ou 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>
En utilisant ces méthodes, vous pouvez facilement désérialiser des objets de JsonElement :
<code class="language-csharp">var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<MyClass>();</code>.NET 5 et versions antérieures :
Dans les versions antérieures de .NET, ces méthodes n'étaient pas disponibles. La solution de contournement consiste à écrire le JSON dans un tampon d'octets intermédiaire :
<code class="language-csharp">public static partial class JsonExtensions
{
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>Cette méthode fonctionne mieux que la conversion préalable de JsonElement en chaîne.
Remarque :
JsonDocument : JsonDocument utilise la mémoire poolée, elle doit donc être libérée correctement (il est recommandé d'utiliser l'instruction using). JsonNode : Des méthodes similaires existent pour le nœud de document JSON mutable JsonNode. 
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!
Méthodes de codage courantes
Paiement sans mot de passe Taobao
cas où l'utilisation de SQL
Que dois-je faire si le disque temporaire ps est plein ?
Comment récupérer les données du disque dur mobile
Que se passe-t-il lorsque l'adresse IP n'est pas disponible ?
Auto-apprentissage pour débutants en langage C sans fondement
fenêtre.invite