:
Date 객체로 JSON 표현 "/ 일 (틱의 수) /". 틱 수는 UTC 1970 년 1 월 1 일 자정 이후 경과 한 틱 수 (밀리 초)를 나타내는 양수 또는 음수 long 값입니다.
지원되는 최대 날짜 값은 MaxValue (12/31/9999 11:59:59 PM)이고 지원되는 최소 날짜 값은 MinValue (1/1/0001 12:00:00 AM)입니다.
당신은 당신의 유형을 처리 DateTime
에 대한 JavaScriptConverter
를 등록해야합니다 :
마음에
public class DateTimeConverter : JavaScriptConverter
{
public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
{
if (dictionary == null)
throw new ArgumentNullException("dictionary");
if (type == typeof(DateTime))
{
DateTime time;
time = DateTime.Parse(dictionary["Time"].ToString(), /** put your culture info here **/);
return time;
}
return null;
}
public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
{
DateTime? time = obj as DateTime?;
if (time == null)
{
Dictionary<string, object> result = new Dictionary<string, object>();
result["Time"] = time.Value;
return result;
}
return new Dictionary<string, object>();
}
public override IEnumerable<Type> SupportedTypes
{
get { return new ReadOnlyCollection<Type>(new List<Type>(new Type[] { typeof(DateTime) })); }
}
}
곰을 당신이 당신의 JSON 실제로 객체 속성 이름의 관점에서해야합니다 무엇을 설명해야합니다 (아마도 "시간"이 아닌 다른 이름을 사용하고있을 것입니다).
하면 JavaScriptSerializer에 등록 :
serializer.RegisterConverters(new List<JavaScriptConverter>() { new DateTimeConverter() });
마지막으로,이 할 수있는 더 많은, 그리고이에 구축하는 유일한 예이다 있습니다. 명시 적으로 "Time"이라는 이름의 사전 항목을 검색 중이며 구문 분석 실패를 처리하지 않습니다. DateTime을 사용하는 필드에는 하나 이상의 이름이있을 수 있습니다.
답변 해 주셔서 감사합니다. 2 가지 질문 : 직렬화 된 결과를 여전히 원시 유형으로 표현할 수 있습니까? 나는. 다른 객체 w/Time 속성 안에 감싸지 않았습니까? 또한 변환기가 SupportedTypes 속성의 모든 파생 형식을 처리하는 방법을 알고 있습니까? 특정 인터페이스를 특정 방식으로 직렬화하기 위해이 기능을 사용하기를 원하기 때문에 묻습니다. –
첫 번째 질문에 대한 답이 확실하지 않습니다. 특별히 처리하고자하는 모든 유형의 경우, 변환기를 작성하고 위와 동일하게 등록해야합니다. – doctorless