Dans Newtonsoft.Json, la méthode ToObject()
est généralement utilisée pour convertir les jetons JSON en objets fortement typés. Cependant, il n’existe aucune méthode équivalente disponible dans System.Text.Json.
Dans .NET 6 et versions ultérieures, des méthodes d'extension ont été ajoutées à JsonSerializer
pour désérialiser les objets directement depuis JsonElement
ou JsonDocument
. Cela permet la syntaxe suivante :
<code class="language-csharp">using var jDoc = JsonDocument.Parse(str); var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<SomeClass>();</code>
Pour .NET 5 et versions antérieures, une solution de contournement impliquant l'écriture dans un tampon d'octets intermédiaire 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); } 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>
Instructions :
JsonDocument
pour using
car elle peut être libérée. 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!