Maison >développement back-end >C++ >Comment sérialiser les propriétés JSON en tant que valeurs plutôt qu'objets ?
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" }
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... }
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... }
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" }
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!