Maison > développement back-end > C++ > Comment puis-je désérialiser du JSON imbriqué en objets C# typés ?

Comment puis-je désérialiser du JSON imbriqué en objets C# typés ?

Susan Sarandon
Libérer: 2024-12-25 12:11:09
original
447 Les gens l'ont consulté

How Can I Deserialize Nested JSON into Typed C# Objects?

Désérialisation JSON imbriquée avec des objets C# typés

Désérialisation du JSON imbriqué dans un dictionnaire plat en C#, l'utilisation de System.Text.Json peut faire en sorte que la plupart des propriétés deviennent du type JsonElement. Pour obtenir des types C# plus spécifiques basés sur les types de propriétés JSON, un JsonConverter personnalisé est requis.

ObjectAsPrimitiveConverter

Le code suivant fournit un JsonConverter personnalisé nommé ObjectAsPrimitiveConverter :

public class ObjectAsPrimitiveConverter : JsonConverter<object>
{
    // ... (converter implementation)
}
Copier après la connexion

Convertisseur Configuration

Pour configurer le convertisseur, spécifiez le FloatFormat souhaité (double ou décimal), UnknownNumberFormat (erreur ou JsonElement) et ObjectFormat (ExpandoObject ou Dictionary) :

var options = new JsonSerializerOptions
{
    Converters = { new ObjectAsPrimitiveConverter(...) },
    WriteIndented = true,
};
Copier après la connexion

Désérialisation en objet

Vers désérialisez le JSON imbriqué en un objet (ou dynamique si vous utilisez ExpandoObject), utilisez :

dynamic d = JsonSerializer.Deserialize<dynamic>(json, options);
Copier après la connexion

Personnalisation

Le convertisseur peut être personnalisé pour prendre en charge différents types numériques et objets formats. De plus, il peut être étendu pour gérer plus gracieusement les numéros JSON non pris en charge.

Conclusion

En implémentant un JsonConverter personnalisé, vous pouvez obtenir une désérialisation spécifique au type des objets JSON imbriqués. dans une structure de données hiérarchique avec des types C# appropriés pour chaque propriété.

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