JsonParser Class in ASP.NET

  1. using System;  
  2.   
  3. using System.Collections.Generic;  
  4. using System.Linq;  
  5.   
  6. using System.Web;  
  7.   
  8. using System.Runtime.Serialization.Json;  
  9.   
  10. using System.IO;  
  11.   
  12. using System.Text;  
  13.   
  14. using System.Text.RegularExpressions;  
  15.   
  16. /// <summary>  
  17.   
  18. /// JSON Serialization and Deserialization Class  
  19.   
  20. /// Created By:Ajeet Mishra 04/09/2015  
  21.   
  22. /// </summary>  
  23.   
  24. namespace JsonParsingSample  
  25.   
  26. {  
  27.   
  28.     public class ClassJsonHelper  
  29.   
  30.     {  
  31.   
  32.         /// <summary>  
  33.   
  34.         /// JSON Serialization Method  
  35.   
  36.         /// </summary>  
  37.   
  38.         public static string ToJsonConvertor < T > (T t)  
  39.   
  40.         {  
  41.   
  42.             DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));  
  43.   
  44.             MemoryStream ms = new MemoryStream();  
  45.   
  46.             ser.WriteObject(ms, t);  
  47.   
  48.             string jsonString = Encoding.UTF8.GetString(ms.ToArray());  
  49.   
  50.             ms.Close();  
  51.   
  52.             //Replace Json Date String  
  53.   
  54.             string p = @"\\/Date\((\d+)\+\d+\)\\/";  
  55.   
  56.             MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString);  
  57.   
  58.             Regex reg = new Regex(p);  
  59.   
  60.             jsonString = reg.Replace(jsonString, matchEvaluator);  
  61.   
  62.             return jsonString;  
  63.   
  64.         }  
  65.   
  66.         /// <summary>  
  67.   
  68.         /// JSON Deserialization Method  
  69.   
  70.         /// </summary>  
  71.   
  72.         public static T FromJsonConvertor < T > (string jsonString)  
  73.   
  74.         {  
  75.   
  76.             //Convert "yyyy-MM-dd HH:mm:ss" String as "\/Date(1319266795390+0800)\/"  
  77.   
  78.             string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";  
  79.   
  80.             MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate);  
  81.   
  82.             Regex reg = new Regex(p);  
  83.   
  84.             jsonString = reg.Replace(jsonString, matchEvaluator);  
  85.   
  86.             DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));  
  87.   
  88.             MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));  
  89.   
  90.             T obj = (T) ser.ReadObject(ms);  
  91.   
  92.             return obj;  
  93.   
  94.         }  
  95.   
  96.         /// <summary>  
  97.   
  98.         /// Convert Serialization Time /Date(1319266795390+0530) as String  
  99.   
  100.         /// </summary>  
  101.   
  102.         private static string ConvertJsonDateToDateString(Match m)  
  103.   
  104.         {  
  105.   
  106.             string result = string.Empty;  
  107.   
  108.             DateTime dt = new DateTime(1970, 1, 1);  
  109.   
  110.             dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value));  
  111.   
  112.             dt = dt.ToLocalTime();  
  113.   
  114.             result = dt.ToString("yyyy-MM-dd HH:mm:ss");  
  115.   
  116.             return result;  
  117.   
  118.         }  
  119.   
  120.         /// <summary>  
  121.   
  122.         /// Convert Date String as Json Time  
  123.   
  124.         /// </summary>  
  125.   
  126.         private static string ConvertDateStringToJsonDate(Match m)  
  127.   
  128.         {  
  129.   
  130.             string result = string.Empty;  
  131.   
  132.             DateTime dt = DateTime.Parse(m.Groups[0].Value);  
  133.   
  134.             dt = dt.ToUniversalTime();  
  135.   
  136.             TimeSpan ts = dt - DateTime.Parse("1970-01-01");  
  137.   
  138.             result = string.Format("\\/Date({0}+0530)\\/", ts.TotalMilliseconds);  
  139.   
  140.             return result;  
  141.   
  142.         }  
  143.   
  144.     }  
  145.   
  146. }