我在ViewModels中使用了一个结构,以简化自动序列化它们的方式。我希望它的序列化能够简单地调用.ToString()方法。目前,当它被序列化为JSON时,它会变成:"{}“。下面是我的Date类:
public struct Date
{
private DateTime _date;
public Date(DateTime date)
{
_date = date;
}
public static implicit operator Date(DateTime date) => new Date(date);
public override string ToString() => _date.ToString("yyyy-MM-dd");
}我想可能有一些属性可以用来装饰结构,或者可能有一些接口可以实现,但它似乎没有帮助。
发布于 2019-01-30 05:55:15
经过进一步的研究,MVC似乎使用了JsonConverter属性来序列化JsonResult,下面的代码完成了我想要做的事情。
[JsonConverter(typeof(DateToString))]
public struct Date
{
private DateTime _date;
public Date(DateTime date)
{
_date = date;
}
public static implicit operator Date(DateTime date) => new Date(date);
public override string ToString() => _date.ToString("yyyy-MM-dd");
}
public class DateToString : JsonConverter
{
public override bool CanConvert(Type objectType) => objectType == typeof(Date);
public override bool CanRead => false;
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
=> throw new NotImplementedException();
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) =>
writer.WriteValue(value.ToString());
}https://stackoverflow.com/questions/54429724
复制相似问题