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

Comment convertir un JsonElement en un objet dans System.Text.Json de .NET ?

Barbara Streisand
Libérer: 2025-01-08 15:27:40
original
991 Les gens l'ont consulté

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

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

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

Cette méthode fonctionne mieux que la conversion préalable de JsonElement en chaîne.

Remarque :

    Libération de
  • JsonDocument : JsonDocument utilise la mémoire poolée, elle doit donc être libérée correctement (il est recommandé d'utiliser l'instruction using).
  • Disponibilité de nouvelles méthodes : De nouvelles méthodes d'extension de désérialisation sont disponibles dans .NET 6.0 Preview RC1 et versions ultérieures.
  • Méthodes similaires pour
  • JsonNode : Des méthodes similaires existent pour le nœud de document JSON mutable JsonNode.

How to Convert a JsonElement to an Object in .NET's System.Text.Json?

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