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

Comment sérialiser les propriétés JSON en tant que valeurs plutôt qu'objets ?

DDD
Libérer: 2025-01-03 09:24:43
original
887 Les gens l'ont consulté

How to Serialize JSON Properties as Values Instead of Objects?

Sérialisation des propriétés JSON en tant que valeurs

Lorsque vous utilisez des représentations JSON dans votre code, vous pouvez rencontrer des situations dans lesquelles vous souhaitez sérialiser une propriété en tant que valeur. valeur plutôt qu’un objet. Il s'agit d'obtenir un format JSON plus concis et souhaité.

Considérons l'exemple suivant impliquant les classes Car et StringId :

class Car
{
    public StringId Id { get; set; }
    public string Name { get; set; }
}

class StringId
{
    public string Value { get; set; }
}

// Desired representation
{ "Id": "someId", "Name": "Ford" }

// Default (undesired) representation
{ "Id" : { "Value": "someId" }, "Name": "Ford" }
Copier après la connexion

La représentation JSON souhaitée élimine l'objet imbriqué pour Id et affiche directement sa valeur. Pour y parvenir, nous pouvons utiliser deux approches :

Utilisation d'un TypeConverter

En implémentant un TypeConverter pour StringId, JSON.NET l'utilisera automatiquement pour convertir la propriété en une chaîne :

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

class StringIdConverter : TypeConverter
{
    // Implementation omitted for brevity...
}
Copier après la connexion

Utiliser un JsonConverter

Cette approche nécessite que vous ajoutiez des attributs JSON.NET spécifiques à votre classe StringId :

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

class StringIdConverter : JsonConverter
{
    // Implementation omitted for brevity...
}
Copier après la connexion

Dans les deux cas, le convertisseur lit et écrit directement la valeur, ce qui entraîne la représentation JSON souhaitée :

{ "Id": "someId", "Name": "Ford" }
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal