Я пишу пользовательский сериализатор Json для улучшения работы моего сервиса. И да, я действительно рассматривал Json.NET, servicestack, DataContractJsonSerializer и т. Д., Прежде чем принял решение. Мои объекты плоские с простыми типами .NET, и я хотел избежать накладных расходов на гораздо большую библиотеку.Сериализация .NET DateTime для строки Json
В любом случае, здесь я столкнулся с небольшой проблемой. У меня есть код сериализации DateTime -
var epoch = new DateTime(1970, 1, 1, 0, 0, 0);
sb.Append("\"\\/Date(");
SerializeNumber((time - epoch).TotalMilliseconds, sb);
sb.Append(")\\/\"");
И это прекрасно работает, за исключением того, я совсем не могу получить его, чтобы соответствовать по умолчанию .NET JSon сериалайзер в вывода.
.NET serializer
"\\/Date(1328057884253)\\/\"
Custom serializer
"\\/Date(1328057884253.04)\\/\"
Хм, так что я попытался сделать мое преобразование менее точным и переход к (целое) TotalSeconds вместо миллисекунд, и это дает мне это -
.NET serializer
"\\/Date(1328054810067)\\/\"
Custom serializer
"\\/Date(1328054810)\\/\"
Я предполагаю, что это не будет большое дело, но было бы неплохо, если бы мои модульные тесты проходили против стандартного сериализатора .NET для простоты. Есть идеи?
Спасибо.
Я надеюсь на последующие действия в комментариях, которые показывают вашу дельта производительности с помощью вашей ручной библиотеки. –
С учетом servicestack.text у вас были контрольные показатели, что он был слишком медленным? или был ли 120-килограммовый бесплатный .dll слишком большой? – mythz
сервисная служба не была медленной, это было не приемлемым решением для нашего клиента по разным причинам. Обратите внимание, что я только сериализую события, которые довольно тривиальны, по сравнению с десериализацией, которая является зверем. Мой локальный профайлер показывает улучшение 4.x% по сравнению с стандартным сериализатором .NET при использовании моего обработчика с ручной обработкой. – kosh