Bar*_*xto 1 c# asp.net json asp.net-web-api
有这个对象:
public class Person {
public string FirstName { get; set; }
[DataType(DataType.Date)]
public DateTime Birthday { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
返回此对象作为Web Api 2中的内容为生日生成此json:
"2014-02-20T17:00:32.7114097+00:00"
我怎样才能成为:"2014-02-20"没有时间的一部分?
var json = JsonConvert.SerializeObject(
new Person() { FirstName = "Joe", Birthday = DateTime.Now.AddDays(-2) },
new ShortDateConverter()
);
var p = JsonConvert.DeserializeObject<Person>(json,new ShortDateConverter());
Run Code Online (Sandbox Code Playgroud)
或用.装饰你的田地 [JsonConverter(typeof(ShortDateConverter))]
并使用像
var json = JsonConvert.SerializeObject(new Person()
{ FirstName = "Joe", Birthday = DateTime.Now.AddDays(-2) } );
var p = JsonConvert.DeserializeObject<Person>(json);
Run Code Online (Sandbox Code Playgroud)
public class ShortDateConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(DateTime);
}
public override object ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer)
{
return DateTime.ParseExact((string)reader.Value, "yyyy-MM-dd",CultureInfo.InvariantCulture);
}
public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
{
DateTime d = (DateTime)value;
writer.WriteValue(d.ToString("yyyy-MM-dd"));
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,最简单的方法是对内置IsoDateTimeConverter类进行子类化并设置一个不同的类DateTimeFormat。
public class IsoDateConverter : IsoDateTimeConverter
{
public IsoDateConverter() =>
this.DateTimeFormat = Culture.DateTimeFormat.ShortDatePattern;
}
public class Foo
{
[JsonConverter(typeof(IsoDateConverter))]
public DateTimeOffset Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5181 次 |
| 最近记录: |