Sérialisation de plusieurs propriétés DateTime dans la même classe en utilisant différents formats pour chacune
J'ai une classe avec deux DateTime propriétés. J'ai besoin de sérialiser chacune des propriétés avec un format différent. Comment puis-je le faire? J'ai essayé:
JsonConvert.SerializeObject(obj, Formatting.None,
new IsoDateTimeConverter {DateTimeFormat = "MM.dd.yyyy"});
Cette solution ne fonctionne pas pour moi, car elle s'applique le format de date pour toutes les propriétés. Est-il possible de sérialiser chaque DateTime propriété avec autre format? Peut-être qu'il est un attribut?
source d'informationauteur Andrei
Vous devez vous connecter pour publier un commentaire.
NewtonSoft.Json
a une structure qui est un peu difficile à comprendre, vous pouvez utiliser quelque chose comme ce qui suit convertisseur personnalisé pour faire ce que vous voulez:Un moyen simple de gérer cette situation est à la sous-classe le
IsoDateTimeConverter
pour créer une date personnalisée convertisseur pour chaque format de date que vous avez besoin. Par exemple:Ensuite, vous pouvez utiliser le
[JsonConverter]
attribut pour décorer la personneDateTime
propriétés dans toutes les classes qui ont besoin d'une mise en forme personnalisée:Démo:
De sortie:
Vous pouvez créer une date personnalisée classe qui hérite de la IsoDateTimeConverter et passer un format sur le constructeur. Sur les attributs, vous pouvez spécifier le format correspond à chaque propriété. Voir le code ci-dessous:
Je sais que c'est une vieille question, mais je suis tombé sur elle au cours de ma recherche pour la même question.
Newtonsoft a maintenant un DateFormatString propriété dans JsonSerializerSettings de classe que vous pouvez utiliser. Je suis venu à cette question, la recherche de réponse et je viens de trouver le bien, je l'ai utilisé comme ci-dessous et il fonctionne comme ci-dessous:
Quand
value
aura un objet DateTime, il va la convertir en chaîne de caractères respectant_StrDateFormat
chaîne.Peut-être ce lien officiel peut être mis à jour?
Ce qui concerne.