사용자 정의 json 날짜 서열화
3070 단어 json
public class DateTimeConverter : JavaScriptConverter
{
public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
{
if (string.IsNullOrEmpty(dictionary["Value"].ToString()) || type != typeof(DateTime?))
return null;
if (string.IsNullOrEmpty(dictionary["Value"].ToString()) || type != typeof(DateTime))
return DateTime.MinValue;
string dateString = dictionary["Value"].ToString().Replace("new Date(", "").Replace(")", "");
string[] spli = dateString.Split(',');
return DateTime.Parse(string.Format("{0}-{1}-{2} {3}:{4}:{5}", spli[0], spli[1], spli[2], spli[3], spli[4], spli[5]));
}
public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
{
IDictionary<string, object> result = new Dictionary<string, object>();
if (obj == null)
result["Value"] = string.Empty;
else
{
DateTime jsdate = (DateTime)obj;
result["Value"] = string.Format("new Date({0},{1},{2},{3},{4},{5})", jsdate.Year, jsdate.Month-1, jsdate.Day, jsdate.Hour, jsdate.Minute, jsdate.Second);
}
return result;
}
public override IEnumerable<Type> SupportedTypes
{
get
{
IList<Type> typelist = new List<Type>();
typelist.Add(typeof(DateTime));
typelist.Add(typeof(DateTime?));
return typelist;
}
}
상기 코드의 서열화는 이미 테스트를 하였으며, 반서열화는 매우 드물기 때문에 테스트를 하지 않았다.
JS에서 new Date()에는 다음과 같은 구조 함수가 있습니다.
1 new Date("month dd,yyyy hh:mm:ss"); 2 new Date("month dd,yyyy"); 3 new Date(yyyy,mth,dd,hh,mm,ss); 4 new Date(yyyy,mth,dd); 5 new Date(ms);
첫 번째, 두 번째 방식은 월이 영문이어서 직접 사용하기가 불편하다.
네 번째는 시간을 소홀히 했고, 다섯 번째는 시간을 GMT 시간과 1970년 1월 1일 사이의 밀리초 차이였다.
그래서 간단하고 실용적인 건 네 번째밖에 없어요.
JS의 상Mth는 0에서 시작하고 C#의datetim은 1월에 1을 줄여야 하기 때문이다.몬스는 1부터.
이제 우리는 서열화 규칙을 만들어 냈으니, 다음 단계는 서열화를 실현하는 것이다.
var jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
jsonSerializer.RegisterConverters(new System.Web.Script.Serialization.JavaScriptConverter[] { new DateTimeConverter() });
jsonSerializer.Serialize(DateTime.Now);
이렇게 하면 서열화된 Json 형식 문자열을 얻을 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콘텐츠 SaaS | JSON 스키마 양식 빌더Bloomreach Content를 위한 JSON Form Builder 맞춤형 통합을 개발합니다. 최근 Bloomreach Content SaaS는 내장 앱 프레임워크를 사용하여 혁신적인 콘텐츠 유형 필드를 구축할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.