Existe-t-il un moyen de remplacer la manière dont DataContractJsonSerializer sérialise les dates?

Existe-t-il un moyen de modifier la manière dont DataContractJsonSerializer sérialise les dates?

Actuellement, il va convertir une date en quelque chose comme:

{ "date": "/Date(1260597600000-0600)/" } 

Je préférerais qu’il soit sérialisé en millisecondes seulement depuis utc 1970. De cette façon, d’autres langages peuvent facilement fonctionner avec les données json.

Non, il n’y a pas de crochet dans le sérialiseur lui-même pour le faire. Mais vous pouvez utiliser certains des rappels de sérialisation pour implémenter ce même comportement. Vous créeriez un autre membre de données (de type chaîne) et, avant que les données ne soient sérialisées, un rappel [OnSerializing] serait [OnSerializing] pour copier la valeur du champ DateTime dans la chaîne 1. La section “Contrôle détaillé du format de sérialisation des primitives” dans l’article sur les substituts de la sérialisation (à l’ adresse http://blogs.msdn.com/b/carlosfigueira/archive/2011/09/06/wcf-extensibility-serialization-callbacks .aspx ) montre plus de détails sur ce qui doit être fait.

Voici une solution de contournement décrite ici http://blogs.msdn.com/b/carlosfigueira/archive/2011/09/06/wcf-extensibility-serialization-callbacks.aspx sous la rubrique “Contrôle détaillé du format de sérialisation pour primitives “.

L’idée principale est d’utiliser un champ de sauvegarde de chaîne pour les valeurs non sérialisées et une propriété qui effectue la sérialisation et la désérialisation dans le setter et le getter. Ce n’est pas idéal du sharepoint vue des performances, mais cela pourrait être une solution dans certaines situations.