Pouvez-vous dire JSON.Net pour sérialiser DateTime Utc même si non spécifié?
Dates dans ma base de données sont stockées à l'Utc. Mais quand je retreieve eux w/entity framework ils viennent comme type non spécifié.
Quand JSON.Net sérialise eux, ils ne sont pas au format Utc. Est-il un moyen de dire JSON.Net pour sérialiser DateTimes que l'Utc, même si leur type n'est pas spécifié que l'Utc?
- Je vous suggère de vous faire un DateTime.SpecifyKind() dans votre couche de données afin qu'il renvoie la date correcte. Soit que ou utiliser DateTimeOffset à la place. Non spécifié type qui sort de votre base de données est un problème commun, et il peut causer beaucoup de problèmes lors de votre système fuseau horaire n'est pas de l'UTC.
- Je suis d'accord avec vous. Je ne sais pas d'un moyen propre pour spécifier le type de l'utilisation de EF premier code.
Vous devez vous connecter pour publier un commentaire.
Ensemble
DateTimeZoneHandling
surJsonSerializerSettings
àUtc
. Qui vous permet de convertir toutes les dates à l'UTC avant la sérialisation d'eux.Documentation: DateTimeZoneHandling paramètre
La réponse ci-dessus fonctionne tout à fait, et j'ai donc utilisé que pour créer un attribut pour convertir une API de réponse de la TVP à l'UTC.
J'ai d'abord nécessaire de créer un
JsonConverter
Ensuite, j'ai eu à l'appliquer que pour les propriétés qui doivent être convertis
Comme @dez mentionné dans un commentaire, vous pouvez "marquer" les objets DateTime UTC directement dans .net code juste après le CHARGEMENT de DB et AVANT la sérialisation d'eux:
Pour moi, il était plus simple de créer de l'UTC convertisseur DateTime propriétés (basé sur la mise en œuvre de la Newtonsoft.Json.Convertisseurs de.IsoDateTimeConverter).