DotNetのJSONプロローグと反プロローグ


JSON(JavaScript Object Notation)JavaScriptオブジェクト表示法は、テキストに基づいて、言語とは独立したライト級のデータ交換フォーマットです.現在の通信では、JSONデータフォーマットが多く、JSONは構造、オブジェクト、配列、JSONデータの表記形式が二つあります.
   vsソリューションでは以前にxmlツリー形式でプロジェクトを組織する構造を採用していました.新しい.net coreでは、プロジェクトのソリューションはプロジェクトの構造説明としてjsonを採用しています.
   インターネットのフロントバックグラウンドデータインタラクションでは、序文化対象をjsonとし、フロントエンドajaxは転送データを受け取り、逆順序化を対象として、ページでデータをレンダリングする.jsonに関する内容はこれ以上説明しません.インターネットでの序列化の種類は主にDataContractJson Serializer類を採用しています.
   今はより一般的なjsonのプロローグと反プログレッシブの共通の方法を提供します.
  1.jsonのプロローグ:
        /// 
        ///        JSON
        /// 
        ///       
        ///         
        ///      JSON
        public static string JsonSerializer(T t)
        {
            if (t == null)
                throw new ArgumentNullException("t");
            string jsonString;
            try
            {
                var ser = new DataContractJsonSerializer(typeof(T));
                var ms = new MemoryStream();
                ser.WriteObject(ms, t);
                jsonString = Encoding.UTF8.GetString(ms.ToArray());
                ms.Close();
                //  Json Date   
                const string p = @"\\/Date\((\d+)\+\d+\)\\/";
                var matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString);
                var reg = new System.Text.RegularExpressions.Regex(p);
                jsonString = reg.Replace(jsonString, matchEvaluator);
            }
            catch (Exception er)
            {
                throw new Exception(er.Message);
            }

            return jsonString;
        }
 2.Jsonの反プロローグ:
        /// 
        ///  JSON       
        /// 
        public static T JsonDeserialize(string jsonString)
        {
            if (string.IsNullOrEmpty(jsonString))
                throw new Exception(jsonString);
            // "yyyy-MM-dd HH:mm:ss"        "\/Date(1294499956278+0800)\/"  
            const string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";
            try
            {
                var matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate);
                var reg = new System.Text.RegularExpressions.Regex(p);
                jsonString = reg.Replace(jsonString, matchEvaluator);
                var ser = new DataContractJsonSerializer(typeof(T));
                var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
                var obj = (T)ser.ReadObject(ms);
                return obj;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }

        }
  以上は比較的簡単なjsonプロローグと反プログレッシブ方法です.