您的位置:首页 > 编程语言 > ASP

html页面post json字符串到asp.net 接收并处理

2015-03-13 21:18 507 查看
这是html页面的js方法,使用JQ的ajax功能:

var handleurl = "../Controls/insert.aspx";

$.ajax({
url: handleurl,//请求的网址
type: 'POST',//类型
data: jsondata,//手动拼出来的json字符串
dataType: 'html',//可以不填写
success: function (msg) {
var jsonobj = eval('(' + msg + ')');//回调函数处理一下
if (jsonobj.result != "200") {
$.dialog.tips('<p>' + jsonobj.result + '!</p>', 2, 'alert.gif');//可以无视,这是lhgdialog的tip效果
}
else {
$.dialog.tips('<p>数据提交成功!</p>', 2, 'success.gif');

}

}
});


关键部分来了,研究、参考好多网页,几个小时才搞定:

aspx.cs:

Response.ContentType = "text/plain";
byte[] byts = new byte[Request.InputStream.Length];
Request.InputStream.Read(byts, 0, byts.Length);
string req = System.Text.Encoding.Default.GetString(byts);

maindata data = JsonHelper.ParseFormJson<maindata>(req);//这东西网上随便找

string branch = data.branch;//直接使用属性,至于类的声明,下边有
对于json中,有两层甚至多层结构的:

List<textmodel> list_detail_p = data.textlist;//textlist为第一层的子节点,但是他也有很多子节点,此处需要这样处理。


类的声明,类的结构要和json字符串一模一样,不然各种错误:

public class textmodel//第二层
{
public string id { get; set; }
public string text { get; set; }

}
public class checkmodel//第二层</span>

{
public string id { get; set; }
public string value { get; set; }
}
public class maindata//第一层
{

public string branch { get; set; }

public string company { get; set; }
public string item { get; set; }
public string room { get; set; }
public string userid { get; set; }

public List<textmodel> textlist { get; set; }//因为这个键对应多个值,用list声明
public List<checkmodel> checklist { get; set; }
public maindata()
{
textlist = new List<textmodel>();
checklist = new List<checkmodel>();
}

}


最后补上jsonhelp的源码:

public class JsonHelper
{
public JsonHelper()
{
//
// TODO: Add constructor logic here
//
}
/// <summary>
/// 把对象序列化 JSON 字符串
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="obj">对象实体</param>
/// <returns>JSON字符串</returns>
public static string GetJson<T>(T obj)
{
//记住 添加引用 System.ServiceModel.Web
/**
* 如果不添加上面的引用,System.Runtime.Serialization.Json; Json是出不来的哦
* */
DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream())
{
json.WriteObject(ms, obj);
string szJson = Encoding.UTF8.GetString(ms.ToArray());
return szJson;
}
}
/// <summary>
/// 把JSON字符串还原为对象
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="szJson">JSON字符串</param>
/// <returns>对象实体</returns>
public static T ParseFormJson<T>(string szJson)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
{
DataContractJsonSerializer dcj = new DataContractJsonSerializer(typeof(T));
return (T)dcj.ReadObject(ms);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: