一般的Json+jquery+asp.net 的应用在项目中都是ajax的一部分,包括数据源和数据处理页面。经过在网络上的学习,为了可以方便的生成Json,网上一般的方法是引用了Newtonsoft.Json类来做此事。应用该类可以方便的生成Json数据串。
1.生成Json数据串
方法1,使用JavaScriptConvert.DeserializeObject对实体进行转换
下面这个是JavaScriptConvert.DeserializeObject的方法说明
//把Json字符串反序列化为对象
目标对象 = JavaScriptConvert.DeserializeObject(JSON字符串, typeof(目标对象));
view plaincopy to clipboardprint?
// 获取用户数据
IList<MUsersInfo> userInfoList = bllUser.GetSearch(userName, unitID, 0, 0);
// 使用方法对泛型实体进行转换
string jsonString = JavaScriptConvert.SerializeObject(userInfoList);
// 输出串
Response.Clear();
Response.ContentEncoding = Encoding.UTF8;
Response.ContentType = "application/json";
Response.Write(jsonString);
Response.Flush();
Response.End();
// 获取用户数据
IList<MUsersInfo> userInfoList = bllUser.GetSearch(userName, unitID, 0, 0);
// 使用方法对泛型实体进行转换
string jsonString = JavaScriptConvert.SerializeObject(userInfoList);
// 输出串
Response.Clear();
Response.ContentEncoding = Encoding.UTF8;
Response.ContentType = "application/json";
Response.Write(jsonString);
Response.Flush();
Response.End();
方法二,没有实体的情况下,可以适应这种
view plaincopy to clipboardprint?
// 获取用户数据
IList<MUsersInfo> userInfoList = bllUser.GetSearch(userName, unitID, 0, 0);
// 构成json数据串
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonWriter(sw);
foreach (MUsersInfo item in userInfoList)
{
writer.WriteStartArray();
writer.WriteStartObject();
writer.WritePropertyName("UserId"); // 属性名称
writer.Writue(item.Ts_Users_ID); // 属性值
writer.WritePropertyName("RealName");
writer.Writue(item.Ts_User_RealName);
writer.WriteEndObject();
writer.WriteEndArray();
}
writer.Flush();
// 生成串
string jsonString = sw.GetStringBuilder().ToString();
// 输出
Response.Clear();
Response.ContentEncoding = Encoding.UTF8;
Response.ContentType = "application/json";
Response.Write(jsonString);
Response.Flush();
Response.End();
// 获取用户数据
IList<MUsersInfo> userInfoList = bllUser.GetSearch(userName, unitID, 0, 0);
// 构成json数据串
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonWriter(sw);
foreach (MUsersInfo item in userInfoList)
{
writer.WriteStartArray();
writer.WriteStartObject();
writer.WritePropertyName("UserId"); // 属性名称
writer.Writue(item.Ts_Users_ID); // 属性值
writer.WritePropertyName("RealName");
writer.Writue(item.Ts_User_RealName);
writer.WriteEndObject();
writer.WriteEndArray();
}
writer.Flush();
// 生成串
string jsonString = sw.GetStringBuilder().ToString();
// 输出
Response.Clear();
Response.ContentEncoding = Encoding.UTF8;
Response.ContentType = "application/json";
Response.Write(jsonString);
Response.Flush();
Response.End();
两种方式各有各的好处,第一种方便,第二种灵活。
2.jquery读取json串
view plaincopy to clipboardprint?
$(document).ready(function() {
$("#Button1").click(function() {
$.getJSON("webService/UserList.aspx", function(json) {
alert("total " + json.length.toString() + " records");
for (var i = 0; i < json.length; i++) {
$("<li />").appendTo("div").html(json[i].Ts_User_RealName);
}
});
});
});
$(document).ready(function() {
$("#Button1").click(function() {
$.getJSON("webService/UserList.aspx", function(json) {
alert("total " + json.length.toString() + " records");
for (var i = 0; i < json.length; i++) {
$("<li />").appendTo("div").html(json[i].Ts_User_RealName);
}
});
});
});