asp.net json 与xml 的基础事例

 1  //json序列化和反序列化 using System.Runtime.Serialization.Json;
 2     public static string JsonSerializer<T>(T t)
 3     {
 4         DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
 5         MemoryStream ms = new MemoryStream();
 6         ser.WriteObject(ms, t);
 7         string jsonString = Encoding.UTF8.GetString(ms.ToArray());
 8         ms.Close();
 9         //替换Json的Date字符串
10         string p = @"\\/Date\((\d+)\+\d+\)\\/";
11         MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString);
12         Regex reg = new Regex(p);
13         jsonString = reg.Replace(jsonString,matchEvaluator);
14         return jsonString;
15     }
16 
17     //反序列化
18     public static T JsonDeserialize<T>(string jsonString)
19     {
20         //将"yyyy-MM-dd HH:mm:ss"格式的字符串转为"\/Date(1294499956278+0800)\/"格式           string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";
21         string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";
22         MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate);
23         Regex reg = new Regex(p);
24         jsonString = reg.Replace(jsonString, matchEvaluator);
25         DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
26         MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
27         T obj = (T)ser.ReadObject(ms);
28         return obj;
29     }
30 
31 
32 
33     /// <summary>      
34     /// /// 将Json序列化的时间由/Date(1294499956278+0800)转为字符串    
35     /// /// </summary>    
36     /// 
37   
38     private static string ConvertJsonDateToDateString(Match m)    
39     {         
40         string result = string.Empty;     
41         DateTime dt = new DateTime(1970,1,1);    
42         dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value));     
43         dt = dt.ToLocalTime();       
44         result = dt.ToString("yyyy-MM-dd HH:mm:ss");      
45         return result;   
46     }        
47     /// <summary> 
48     /// 
49     /// 将时间字符串转为Json时间     
50     /// /// </summary>     
51     /// 
52 
53     private static string ConvertDateStringToJsonDate(Match m)   
54     {         
55         string result = string.Empty;      
56         DateTime dt = DateTime.Parse(m.Groups[0].Value);    
57         dt = dt.ToUniversalTime();        
58         TimeSpan ts = dt - DateTime.Parse("1970-01-01");    
59         result = string.Format("\\/Date({0}+0800)\\/",ts.TotalMilliseconds);  
60         return result;   
61     }
62 
63     public class Person
64     {
65         public string Name { get; set; }
66         public int Age { get; set; }
67         public DateTime LastLoginTime { get; set; }
68     }
69 
70 
71         //序列化
72         Person p = new Person();
73         p.Name = "张三";
74         p.Age = 28;
75         p.LastLoginTime = DateTime.Now;
76         string jsonString = JsonSerializer<Person>(p);
77         Response.Write(jsonString);
78       //  反序列化
79         string json = "{\"Age\":28,\"LastLoginTime\":\"2011-01-09 00:30:00\",\"Name\":\"张三\"}";
80         Person p = JsonDeserialize<Person>(json);
81         Response.Write("姓名:" + p.Name + "</br>");
82         Response.Write("年龄:" + p.Age+"</br>");
83         Response.Write("时间:" + p.LastLoginTime);
84 
85         List<Person>list=new List <Person>{
86          new Person{Name="张三",Age=24},
87          new Person{Name="小白",Age=5}
88         };
89 
90         string jsonString = JsonSerializer<List< Person>>(list);
91         Response.Write(jsonString);
92 
93         Dictionary<string,string>Dic=new Dictionary<string,string>();
94         Dic.Add("Name", "24");
95         Dic.Add("Age","28");
96         string jsonString=JsonSerializer<Dictionary<string,string>>(Dic);
97         Response.Write(jsonString);

 

posted @ 2014-07-10 14:13  Debugs  阅读(175)  评论(0编辑  收藏  举报