Json序列化,其实我对Json也不怎么了解,只通过一些视频学习了一下,下面把我知道的列出来,欢迎大家拍砖,呵呵。
AJAX传递复杂数据结构如果按自己进行格式定义的话会经历组装,解析的过程,比较麻烦,其实AJAX中有一个数据的传输标准Json.
Json 将服务器端将复杂对象序列化为一个Json字符串,在浏览器端再用$.parseJson()反序列化为Javascript可以读取的对象。
C# 中将.NET对象序列化为Json字符串的方法:JavaScriptSerializer().Serialize(),AJAX得到的data是Json格式的数据,用$.parseJson()将Json格式的数据解析成javascript对象。
首先在客户端,JsonTest1.html 通过AJAX发出请求,然后服务端返回数据,数据存在data中,如下所示:
<head>
<title>无标题页</title>
<script src="http://www.cnblogs.com/JQuery/js/jquery-1.4.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$.post("JsonTest1.ashx",function(data,status){
// 反序列化一个对象
// var person = $.parseJSON(data);
// alert(person.Name);
// alert(data);
// 反序列化一个数组
var str = $.parseJSON(data);
alert(str[1]);
})
})
</script>
</head>
下面是服务端 JsonTest1.ashx 的代码,服务端将复杂数据类型(对象,数组)发回给客户端
1 public class JsonTest1 : IHttpHandler {
2
3 public void ProcessRequest (HttpContext context) {
4 context.Response.ContentType = "text/plain";
5 JavaScriptSerializer jss = new JavaScriptSerializer();
6 //传一个对象过去
7 //String json = jss.Serialize(new Person() { Name="yaoguipeng",Age=30});
8 //context.Response.Write(json);
9 //传一个数组过去
10 string[] str = { "yaoguipeng","guipengyao","yaopeng"};
11 string json = jss.Serialize(str);
12 context.Response.Write(json);
13 }
14
15 public bool IsReusable {
16 get {
17 return false;
18 }
19 }
20
21 public class Person
22 {
23 public string Name{get;set;}
24 public int Age{get;set;}
25 }
26 }
欢迎大家围观,批评指正!共同探讨,共同进步~