Maison > développement back-end > C++ > Comment convertir efficacement JsonElement en un objet .NET ?

Comment convertir efficacement JsonElement en un objet .NET ?

Patricia Arquette
Libérer: 2025-01-08 15:31:40
original
767 Les gens l'ont consulté

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

Cela permet une conversion simple :

<code class="language-csharp">using var jDoc = JsonDocument.Parse(jsonString);
var myObject = jDoc.RootElement.GetProperty("propertyName").Deserialize<MyObjectType>();</code>
Copier après la connexion

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

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.

How to Efficiently Convert JsonElement to a .NET Object?

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