Даты без времени в выходе ASP.NET Web API JSON Есть ли простой способ настроить JSON.NET, чтобы поля some DateTime были отформатированы без времени, а другие поля DateTime все еще будут отформатированы со временем? Пример: { firstName: 'John', lastName : 'Doe', birthday: '1965-09-23' } Ответ 1 Если вам нужно, чтобы это повлияло только на конкретное поле, сначала создайте тип конвертера: public class OnlyDateConverter : IsoDateTimeConverter { public OnlyDateConverter() { DateTimeFormat = "yyyy-MM-dd"; } } а затем добавьте этот атрибут в любые поля/свойства, которые вы хотите использовать для этого: [JsonConverter(typeof(OnlyDateConverter))] Ответ 2 Попробуйте добавить эту строку для настройки вашего веб-API: config.Formatters.JsonFormatter.SerializerSettings.Converters.Add( new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd" }); Ответ 3 Ответ Yousesef с OnlyDateConverter является лучшим. Но вот одна из альтернатив: private DateTime _birthday; public string Birthday { get { return _birthday.ToString("yyyy-MM-dd"); } set { _birthday = DateTime.ParseExact(value, "yyyy-MM-dd", CultureInfo.InvariantCulture); } } Преимущество. Вам не нужно связывать библиотеку Newtonsoft.Json с вашими классами. Недостаток. Свойство теперь отображается как строка в любом месте, где вы его используете, что может вызвать собственный набор проблем.
Ответ 1 Если вам нужно, чтобы это повлияло только на конкретное поле, сначала создайте тип конвертера: public class OnlyDateConverter : IsoDateTimeConverter { public OnlyDateConverter() { DateTimeFormat = "yyyy-MM-dd"; } } а затем добавьте этот атрибут в любые поля/свойства, которые вы хотите использовать для этого: [JsonConverter(typeof(OnlyDateConverter))]
Ответ 2 Попробуйте добавить эту строку для настройки вашего веб-API: config.Formatters.JsonFormatter.SerializerSettings.Converters.Add( new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd" });
Ответ 3 Ответ Yousesef с OnlyDateConverter является лучшим. Но вот одна из альтернатив: private DateTime _birthday; public string Birthday { get { return _birthday.ToString("yyyy-MM-dd"); } set { _birthday = DateTime.ParseExact(value, "yyyy-MM-dd", CultureInfo.InvariantCulture); } } Преимущество. Вам не нужно связывать библиотеку Newtonsoft.Json с вашими классами. Недостаток. Свойство теперь отображается как строка в любом месте, где вы его используете, что может вызвать собственный набор проблем.