Is there a simple way to configure JSON.NET so that some DateTime
fields will be formatted without time and other DateTime
fields will still be formatted with time?
Example:
{ firstName: 'John', lastName : 'Doe', birthday: '1965-09-23' }
Is there a simple way to configure JSON.NET so that some DateTime
fields will be formatted without time and other DateTime
fields will still be formatted with time?
Example:
{ firstName: 'John', lastName : 'Doe', birthday: '1965-09-23' }
If you need this to only affect a particular field, create a converter type first:
public class OnlyDateConverter : IsoDateTimeConverter
{
public OnlyDateConverter()
{
DateTimeFormat = "yyyy-MM-dd";
}
}
and then add this attribute to whatever fields/properties you want this for:
[JsonConverter(typeof(OnlyDateConverter))]
Try adding this line to configure your Web API:
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd" });
Yousesef's answer with the OnlyDateConverter
is best. But here is one alternative:
private DateTime _birthday;
public string Birthday
{
get { return _birthday.ToString("yyyy-MM-dd"); }
set {
_birthday = DateTime.ParseExact(value, "yyyy-MM-dd",
CultureInfo.InvariantCulture);
}
}
Advantage - You don't need to bind the Newtonsoft.Json library to your classes.
Disadvantage - The property is now exposed as a string anywhere you use it, which can cause it's own set of problems.