System.Web.Script.Serialization.JavaScriptSerializer или System.Runtime.Serialization.Json.DataContractJsonSerializer? - PullRequest
28 голосов
/ 07 мая 2009

Какая разница между этими двумя? Почему вы используете один поверх другого?

Ответы [ 3 ]

14 голосов
/ 07 мая 2009

Найдено здесь: http://aaron -powell.spaces.live.com / blog / cns! 91A824220E2BF369! 150.entry

DataContractJsonSerializer Основной целью DataContractJsonSerializer является использование с WCF, так как одна сериализация является большой целью WCF. Кроме того, он также лучше оснащен для обработки сложных классов, которые имеют только определенные свойства, доступные для сериализации. Этот класс более строго типизирован, имеет больше знаний о типах, которые он обрабатывает, и лучшую обработку ошибок для плохо сформированного JSON.

JavaScriptSerializer Этот класс, с другой стороны, гораздо лучше оснащен для быстрой сериализации, это более ковбойский подход. Меньше проверок на ошибки и меньше контроля над тем, какие свойства сериализуются.

Обновление

Поскольку вышеприведенная ссылка не работает, вот еще одна ссылка: http://kb.cnblogs.com/a/1454030.

9 голосов
/ 07 мая 2009

Лично я бы посмотрел на Json.NET - это преимущество в том, что он совместим с .NET 2.0

1 голос
/ 07 мая 2009

JavaScriptSerializer помечен как устаревший в Framework 3.5. Вы не должны использовать это по этой причине. Однако вернемся к вашему вопросу. JavaScriptSerializer не требует, чтобы классы были помечены как [Serializable] или как [DataContract], но DataContractJsonSerializer делает. Если у вас есть скомпилированные классы, которые вы не можете пометить атрибутами, вы можете использовать более старый сериализатор JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...