我正在向我的服务器接收 JSON 数据,其日期表示如下:
{
"startDate": {
"d": "/Date(1346454000000)/"
},
"slots": [
{
"d": "/Date(1347058800000)/"
},
{
"d": "/Date(1347145200000)/"
}
]
}
它序列化为一个简单的对象:
public class SlotsVm
{
public DateTime StartDate { get; set; }
public DateTime[] Slots { get; set; }
}
因为日期格式比较奇怪,只好自己写了一个自定义的 JsonConverter 来处理。为了反序列化,我使用如下代码:
var slotsVm = JsonConvert.DeserializeObject<SlotsVm>(body,
new CustomDateTimeConverter());
如果可能的话,我希望需要在SlotsVm
类上定义转换器,而不是在实际进行转换的代码中。这对于startDate
使用属性的属性是可能的:
[JsonConverter(typeof(CustomDateTimeConverter))]
public DateTime StartDate { get; set; }
但它是不可能的Slots
,它是一个数组而不是一个简单的DateTime
.
最好能够在类本身上定义类所需的转换器:
[JsonConverters(typeof(CustomDateTimeConverter), ...]
public class PutDealVm
{
}
但似乎没有办法做到这一点。
你能想出解决办法吗?有没有办法为我错过的类定义转换器?或者,是否可以定义数组应为其每个元素使用的转换器?