Я пытаюсь прочитать объект JSON, который содержит дату / время в формате, который не может быть непосредственно проанализирован структурой DateTime .NET.Чтобы избежать наличия в моей структуре поля int для даты / времени, я написал собственный DateTimeConverter:
public class DateTimeConverter : JavaScriptConverter {
public override IEnumerable<Type> SupportedTypes {
get { return new Type[] { typeof(DateTime), typeof(DateTime?) }; }
}
public override IDictionary<string, object> Serialize(
object obj, JavaScriptSerializer serializer
) { throw new NotImplementedException(); }
public override object Deserialize(
IDictionary<string, object> dictionary, Type type,
JavaScriptSerializer serializer
) {
return DateTime.Now;
}
}
Но когда я читаю строку JSON с помощью JavaScriptSerializer, он не использует мойПользовательский конвертер:
public struct TextAndDate {
public string Text;
public DateTime Date;
}
static void Main() {
string json =
"{" +
" \"text\": \"hello\", " +
" \"date\": \"1276692024\"" +
"}";
var serializer = new JavaScriptSerializer();
serializer.RegisterConverters(new [] { new DateTimeConverter() });
var test = serializer.Deserialize<TextAndDate>(json);
}
Конвертер используется, когда я непосредственно десериализирую значение DateTime, а не когда я десериализую тип, содержащий значение DateTime.Любой способ обойти это без написания пользовательского типа DateTime или использования int?