Fixation JSON Date de sérialisation .Net web méthode
Je suis actuellement en train de travailler sur un projet où je suis l'envoi d'une .Type de Net via ajax pour une application client via ajax. Je n'ai pas de problèmes avec l'objet sérialisé et défini pour le client.
Je rencontre des problèmes lorsque je prends exactement le même objet et la publier sur le serveur via une méthode web avec l'erreur suivante: /Date(1373950800000)/is not a valid value for DateTime.
ce Qui est assez gênant car c'est ainsi que Microsoft me l'a donné, mais c'est à côté du sujet.
Quelqu'un aurait-il une solution? Je veux une méthode simple ce qui peut être accompli sans avoir à changer l'objet juste avant le retour de l'appel ajax.
Obtenez-vous la chaîne
/Date(1373950800000)/
du serveur? Ou tout simplement 1373950800000
?fait une recherche et trouvé ce post stackoverflow.com/questions/6928281/... j'espère que cela aidera 🙂
La valeur par défaut sur que ASP.NET 4.0 utilise
Le post est utile, mais n'aide pas parce que je ne veux pas avoir le client convertir à cause de Microsoft sérialiseur ne peut pas désérialiser.
OriginalL'auteur Justin | 2013-08-02
Vous devez vous connecter pour publier un commentaire.
Votre problème vient du JavaScript côté serveur sérialiseur vous utilisez; soit
JsonDataContractSerializer
(par défaut sérialiseur pour ASP.NET MVC) ouNewtonSoft Json Serializer
(par défaut sérialiseur pour ASP.NET l'API Web).Pour un exemple visuel de cette date mangling problème ainsi que les solutions possibles, découvrez JSON Dates sont Différentes dans ASP.NET MVC et Web API.
Liés à la page web utilise javascript pour surmonter le problème. De ne pas résoudre le fait qu'un sous-optimale sérialiseur est en cours d'utilisation.
OriginalL'auteur Karl Anderson
Poignée de la DateFormat alors que la sérialisation
suivants du code de résoudre votre problème
Il en résultera que les dates dans 2009-02-15T00:00:00Z format
Avec cette solution, vous pouvez créer des méthodes web qui renvoie les cordes, mais j'ai encore envie de ramener des objets. En retournant un objet de la hiérarchie, google chromes devtools pouvez tout de même créer une arborescence des données renvoyées.
OriginalL'auteur Rao khurram adeel
Cela va vous aider avec l'erreur: cliquez sur moi
DateTime
type .NET sans avoir à faire de mon propre ruse pour le faire fonctionner.OriginalL'auteur kul_mi
C'est la méthode que j'utilise pour ces choses:
Vous devez d'abord nettoyer les indésirables de la date de paramètre
Maintenant, que .NET et unix mesurer le temps d'une manière différente, vous avez pour compenser que par la création d'une date fixée pour le 1er janvier 1970, puis en ajoutant la partie numérique de la date qui vous ont été transmis
Vous devriez noter également qu'il y aura une perte de précision ici .NET les dates sont le plus proche de la nanoseconde où unix dates sont à la milliseconde la plus proche
GET
demande) de la date, si vous essayez de définir (lire:POST
demande) la date, vous serez confronté à la même question, parce que le sérialiseur utilisé sur le serveur-côté, la mutilation de la date.Pourriez-vous donner plus de détails avec un exemple de la façon dont la date se présente après un post? Je n'ai pas rencontré ce
CurlyPaul - ce n'est pas la façon dont la date se présente après le POST, ça sera bien, alors, le problème se produit lorsque le sérialiseur essaie de convertir la valeur de retour dans une .NET date de; il sera mutilé. Voir le lien dans ma réponse.
OriginalL'auteur CurlyPaul
Essayer d'envoyer les dates avec les barres obliques échappé. J'ai un iPad client que les messages JSON pour une ASP.NET WebAPI méthode de service et de nous envoyer les dates de cette façon:
"due": "\/Date(1335830400000)\/"
De ce que j'ai vu, le serveur envoie également les dates avec des barres obliques échappé. Quand j'ai appelé mon service méthodes à l'aide de Fiddler, je vois les dates que
"\/Date(1334938675734)\/"
.Javascript automatiquement les bandes les barres obliques inverses, mais j'ai forcé le littéral de chaîne de
\/Date(1334938675734)\/
et elle n'a toujours pas avec la même erreur.OriginalL'auteur Jeff Ogata