Maison >développement back-end >C++ >Comment puis-je sérialiser/désérialiser les propriétés JSON.Net en tant que valeurs plutôt qu'objets ?

Comment puis-je sérialiser/désérialiser les propriétés JSON.Net en tant que valeurs plutôt qu'objets ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-30 12:57:10640parcourir

How Can I Serialize/Deserialize JSON.Net Properties as Values Instead of Objects?

Json.Net : gestion des propriétés en tant que valeurs au lieu d'objets

Lors de l'utilisation de JSON.Net pour représenter des objets complexes, tels que la voiture et StringId décrites dans l'introduction, il est parfois souhaitable de sérialiser/désérialiser les propriétés sous forme de valeurs simples plutôt que d'objets imbriqués. Cet article présente deux approches pour y parvenir : les convertisseurs de type et les convertisseurs JSON.

Convertisseurs de type

L'ajout d'un convertisseur de type spécifiquement pour la classe StringId permettra à JSON.Net de convertissez-le vers/depuis une chaîne pendant la sérialisation/désérialisation :

[TypeConverter(typeof(StringIdConverter))]
class StringId
{
    public string Value { get; set; }
}

class StringIdConverter : TypeConverter
{
    // ... (Implement CanConvertFrom, CanConvertTo, ConvertFrom, and ConvertTo)
}

JSON Convertisseurs

Alternativement, les convertisseurs JSON offrent plus de contrôle sur le processus de conversion. En appliquant un convertisseur JSON personnalisé à la classe StringId, la logique de sérialisation et de désérialisation peut être explicitement définie :

[JsonConverter(typeof(StringIdConverter))]
class StringId
{
    public string Value { get; set; }
}

class StringIdConverter : JsonConverter
{
    // ... (Implement CanConvert, ReadJson, and WriteJson)
}

Configuration globale du convertisseur

Les convertisseurs JSON peuvent également être défini globalement. Par exemple, pour gérer toutes les propriétés de type StringId en tant que valeurs :

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
    Converters = { new StringIdConverter() }
};

Considérations supplémentaires

  • Dans .Net Core, la prise en charge du convertisseur de type nécessite JSON. Net 10.0.1 ou version ultérieure.
  • Dans les versions portables de JSON.Net, la prise en charge du convertisseur de type n'est pas disponible à partir de la version 10.0.3.
  • Lorsque vous travaillez avec des données numériques ou de date/heure dans la représentation sous forme de chaîne, il est crucial d'utiliser la culture fournie pour garantir la portabilité entre les cultures.

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!

Déclaration:
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