Maison > développement back-end > C++ > Comment convertir JsonElement en un objet fortement typé dans System.Text.Json ?

Comment convertir JsonElement en un objet fortement typé dans System.Text.Json ?

Linda Hamilton
Libérer: 2025-01-08 15:37:46
original
990 Les gens l'ont consulté

How to Convert JsonElement to a Strongly-Typed Object in System.Text.Json?

Méthode équivalente ToObject de System.Text.Json.JsonElement

Concept

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.

Solution

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>
Copier après la connexion

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>
Copier après la connexion

Exemple

<code class="language-csharp">var str = ""; // 一些 JSON 字符串
var jDoc = JsonDocument.Parse(str);
var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<SomeClass>();</code>
Copier après la connexion

Attention

  • Lâchez l'objet JsonDocument pour libérer des ressources mémoire.
  • Des méthodes d'extension ont été ajoutées à JsonNode dans .NET 6 pour une fonctionnalité de désérialisation similaire.
  • La solution de contournement fonctionne mieux car elle évite les conversions de chaînes inutiles.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal