Asp.net MVC json или Json.net?
Теперь я использую asp.net mvc и задаюсь вопросом, что лучше выбрать, используя встроенный Json или Json.Net Я не уверен если у кого-то есть преимущество над другим.
Также, если я действительно пойду по пути Json.Net, я должен пойти со стабильной версией или бета-версией 4? Я не уверен, насколько неустойчивы бета-версии.
Ответы
Ответ 1
У вас могут возникнуть проблемы сериализации дат с MVC JSON. Мой ответ на этот пост повторяется ниже.
Если вы не привязаны к сериализатору MS JSON, вы можете использовать Json.NET. Он поставляется с IsoDateTimeConverter. Это приведет к сериализации даты в ISO 8601.
Например, в нашем проекте Сериализация myObject обрабатывается через следующий код.
JsonNetResult jsonNetResult = new JsonNetResult();
jsonNetResult.Formatting = Formatting.Indented;
jsonNetResult.SerializerSettings.Converters.Add(new IsoDateTimeConverter());
jsonNetResult.Data = myObject;
Если вы решили взять Json.NET вы также захотите захватить JsonNetResult, поскольку он возвращает ActionResult, который может использоваться в Приложение ASP.NET MVC. Это вполне прост в использовании.
Для получения дополнительной информации см.: Good (Date) Times с Json.NET
В настоящее время мы используем Json.NET v3.5 Beta 4 и не сталкивались с проблемами. Однако мы на самом деле не облагали налогом нашу систему, поскольку она еще не вступила в производство. Ваш пробег может варьироваться в зависимости от того, какую часть используемой структуры вы используете.
Надеюсь, что это поможет.
Ответ 2
Моя мысль заключается в том, что я не нашел проблем с испечением в Json. Я бы предложил пойти с этим, пока вы не найдете что-то, что не работает. Меньшие зависимости упрощают отладку.
Ответ 3
В прошлом я работал с библиотекой .NET JSON, которая использовала метод opt-in или opt-out для обозначения того, какие члены класса сериализуются. При рассмотрении примерного приложения NerdDinner я вижу класс в SearchController под названием JsonDinner, который выглядит как обычный класс Dinner, но, похоже, существует только для корректного вывода нескольких дополнительных деталей, которые можно было бы утверждать, только связанные с просмотром, а не по-настоящему связанные с моделью функции. В этом простом случае механизм обозначений атрибутов на модели, идентифицирующий фрагменты, которые должны быть сериализованы для JSON, привел бы к уменьшенному количеству поддерживаемого вручную кода.