TestCode

博客园 首页 新随笔 联系 订阅 管理

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 }

欢迎大家围观,批评指正!共同探讨,共同进步~

posted on 2011-06-25 21:00  yaoguipeng  阅读(381)  评论(1编辑  收藏  举报