最近被jquery折磨了一番,倒腾了一个jquery解析json的demo,本demo想实现从asp.net后台实例化dataset或者datatable数据集,将dataset转换成json并返回给客户端,客户端用jquery getjson方法解析出来并显示在页面上。
首先简单介绍一下getjson方法
jquery.getjson(url,[data],[callback])
url:发送请求地址。
data:待发送 key/value 参数。
callback:载入成功时回调函数。
下面是实战getjson方法
首先 创建一个辅助类,用于将dataset数据集转换成json字符串
复制代码 代码如下:
public static string datatabletojson(string jsonname, datatable dt)
{
stringbuilder json = new stringbuilder();
json.append({\ + jsonname + \:[);
if (dt.rows.count > 0)
{
for (int i = 0; i {
json.append({);
for (int j = 0; j {
json.append(\ + dt.columns[j].columnname.tostring() + \:\ + dt.rows[i][j].tostring() + \);
if (j {
json.append(,);
}
}
json.append(});
if (i {
json.append(,);
}
}
}
json.append(]});
return json.tostring();
}
此方法是msdn上的一个辅助类方法。第二步 手动配置创建一个演示dataset,但在项目中一般都是从数据库中或者service中获得数据
复制代码 代码如下:
public static dataset binddata()
{
datatable dtdata = new datatable();
dtdata.columns.add(id);
dtdata.columns.add(name);
dtdata.columns.add(sex);
datarow drdata;
drdata = dtdata.newrow();
drdata[0] = 16;
drdata[1] = zhaoliu;
drdata[2] = man;
dtdata.rows.add(drdata);
drdata = dtdata.newrow();
drdata[0] = 19;
drdata[1] = zhangsan;
drdata[2] = women;
dtdata.rows.add(drdata);
dataset ds = new dataset();
ds.tables.add(dtdata);
return ds;
}
第三步 创建aspx页面前台页面:两个button,一个单击开始解析json数据,另外一个查看json字符串
复制代码 代码如下:
后台页面:
复制代码 代码如下:
protected void page_load(object sender, eventargs e)
{
jsonajax();
}
private void jsonajax() {
string action = request[action];
if (!string.isnullorempty(action) && action == action) //判断是否通过前台的点击事件进来的
{
string str = datatableconvertjson.datatabletojson(json, data.binddata().tables[0]);
response.write(str);
response.end();
}
}
最后给大家展示一下生成的json格式:top of form
{json:[{id:16,name:zhaoliu,sex:man},{id:19,name:zhangsan,sex:women}]}
bottomof form