【发布时间】:2016-06-24 15:59:11
【问题描述】:
我正在向 API 服务发出请求,该服务以以下形式将日期返回为 JSON:
{
"dateCreated": {
"date":8,
"day":4,
"hours":22,
"minutes":44,
"month":10,
"nanos":241000000,
"seconds":46,
"time":1194590686241,
"timezoneOffset":480,
"year":107
}
}
这里time 是自 Unix 纪元以来的毫秒数,所以这确实是我要注意的唯一属性。
是否可以编写一个自定义的 Json.NET 转换器,将其反序列化为类似的东西
public class ApiResponse
{
public ApiResponse(DateTimeOffset dateCreated)
{
DateCreated = dateCreated;
}
public DateTimeOffset DateCreated { get; }
}
(转换器将在对象的time 属性上调用DateTimeOffset.FromUnixTimeMilliseconds。)
这是我目前的代码:
public class ApiDateConverter : JsonConverter
{
public override bool CanWrite => false;
public override bool CanConvert(Type objectType)
{
return typeof(DateTimeOffset) == objectType;
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
// What type is existingValue here? How do I get existingValue.time?
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotSupportedException();
}
}
【问题讨论】:
标签: c# .net json serialization json.net