是否有一种简单的方法来配置 JSON.NET,以便某些 DateTime
字段将在没有时间的情况下进行格式化,而其他DateTime
字段仍将随着时间进行格式化?
例子:
{ firstName: 'John', lastName : 'Doe', birthday: '1965-09-23' }
是否有一种简单的方法来配置 JSON.NET,以便某些 DateTime
字段将在没有时间的情况下进行格式化,而其他DateTime
字段仍将随着时间进行格式化?
例子:
{ firstName: 'John', lastName : 'Doe', birthday: '1965-09-23' }
如果您需要它只影响特定字段,请先创建一个转换器类型:
public class OnlyDateConverter : IsoDateTimeConverter
{
public OnlyDateConverter()
{
DateTimeFormat = "yyyy-MM-dd";
}
}
然后将此属性添加到您想要的任何字段/属性中:
[JsonConverter(typeof(OnlyDateConverter))]
尝试添加这一行来配置您的 Web API:
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd" });
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 库绑定到您的类。
缺点- 该属性现在在您使用它的任何地方都作为字符串公开,这可能会导致它自己的一系列问题。