jsonのシーケンス化と逆シーケンス化は時間フォーマット変換をサポートする

6243 ワード

.NETが持参したjsonシーケンスには時間フォーマットの問題があり,自分が書いたjsonフォーマットのシーケンス化と逆シーケンス化を解決するために
1.導入されたネーミングスペース
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Web.Script.Serialization;

using System.Text.RegularExpressions;

 
2.josnのシーケンス化
      /// <summary>

        /// JSON   



        /// </summary>

        public static string JsonSerializer<T>(this T t)

        {

            JavaScriptSerializer serializer = new JavaScriptSerializer();

            var jsonString = serializer.Serialize(t);

            //  Json Date   


// \\/Date\((\d+)\+?\d+\)\\/() -  
       string p = @"\\/Date\((\d+)\+\d+\)\\/"; MatchEvaluator matchEvaluator = new MatchEvaluator( m => { DateTime dt = new DateTime(1970, 1, 1); dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value)); dt = dt.ToLocalTime(); return dt.ToString("yyyy-MM-dd HH:mm:ss"); } ); Regex reg = new Regex(p); jsonString = reg.Replace(jsonString, matchEvaluator); return jsonString; }

3.jsonの逆シーケンス化
     /// <summary>

        /// JSON    

        /// </summary>

        public static T JsonDeserialize<T>(this string jsonString)

        {

            // "yyyy-MM-dd HH:mm:ss"        "\/Date(1294499956278+0800)\/"  

            string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";

            MatchEvaluator matchEvaluator = new MatchEvaluator(

                m => {

                    

                    DateTime dt = DateTime.Parse(m.Groups[0].Value);

                    dt = dt.ToUniversalTime();

                    TimeSpan ts = dt - DateTime.Parse("1970-01-01");

                    return string.Format("\\/Date({0}+0800)\\/", ts.TotalMilliseconds);



                });

            Regex reg = new Regex(p);

            jsonString = reg.Replace(jsonString, matchEvaluator);

            JavaScriptSerializer serializer = new JavaScriptSerializer();



            T obj = serializer.Deserialize<T>(jsonString);

            return obj;

        }

 
 
时には、本当に自分が适时に通り抜けて帰って、それがまだ子供の自分に会うことができることを望んでいます