有人能告诉我怎么请我可以创建自定义转换器如何创建一个JSON.NET日期为字符串自定义转换
我知道我可以使用JSON.NET ISODateConvertor,但我要的是具体的,我只是想要将响应中的值作为“日/月/年”字符串发送。
有人能告诉我怎么请我可以创建自定义转换器如何创建一个JSON.NET日期为字符串自定义转换
我知道我可以使用JSON.NET ISODateConvertor,但我要的是具体的,我只是想要将响应中的值作为“日/月/年”字符串发送。
是这样的吗?
string str = JsonConvert.SerializeObject(new DateTimeClass(), new MyDateTimeConvertor());
public class DateTimeClass
{
public DateTime dt;
public int dummy = 0;
}
public class MyDateTimeConvertor : DateTimeConverterBase
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return DateTime.Parse(reader.Value.ToString());
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((DateTime)value).ToString("dd/MM/yyyy"));
}
}
如果您正在使用网络API的自定义格式添加到使用配置:
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new MyDateTimeConvertor())
非常适合我!确保在全局配置(WebApiConfig)中添加此转换器,而不是在帮助区域(HelpPageConfig) – 2014-08-12 20:36:38
L.B.的答案给你,你问什么,但请小心你如何使用它。我们使用ISO日期的原因是因为它们是明确的和文化不变的。如果您将日期/月/年的值发送出去,比如说“1/4/2013”这样的值 - 有人不知道您的区域设置可能会将其解释为1月4日,而不是您打算的4月1日。 – 2013-04-18 17:12:47
@Matt Johnson,谢谢你的回复,我完全同意你的100%。这是一个旧的线程,我现在只使用ISO日期,并在客户端操作:) – DevMania 2013-04-19 09:38:34