使用JSON将数据传递到ASP.Net Web服务
本文关键字:ASP Net Web 服务 JSON 数据 使用 | 更新日期: 2023-09-27 18:24:30
我想知道如何使用JSON将数据从jquery传递到web服务?
我的意思是,如果数组的长度一直在动态变化,我应该使用什么类型的数据类型作为Web服务的输入,例如路线的序列号和登机位置号,下面是一个例子。
{ "route": [
{
"serial": {
"name": " ",
"rsn": " ",
"boardingzone": {
"zone": [
{ "name": " ", "time": " ", "qouta": " " },
{ "name": " ", "time": " ", "qouta": " " },
{ "name": " ", "time": " ", "qouta": " " }
]
},
"destination": {
"zone": [
{ "name": " " },
{ "name": " " },
{ "name": " " }
]
}
}
}
] }
此外,我想知道asp.net期望的格式是什么,这样我就可以相应地更正我的编码,提前感谢您的任何评论和回复。
您可以创建启用JSON的WCF服务。这里有一个简单的教程,让你开始。
我意识到这个问题是不久前提出的,在ASP.Net中有很多方法可以解决这个问题。我通常在aspx页面上使用WebMethods。您也可以使用asmx Web Services文件——Robert在这里很好地解释了这一点。
对于类似上面的结构,我在C#中使用泛型和structs,以便更容易地在服务器端处理数据,类似的方式是用JavaScript处理数据。还使序列化JSON变得更加容易。我意识到以这种方式做这件事最初会有一些开销。我的目标是让C#在服务器端处理数据和在前端使用JavaScript一样容易。
I引用以下命名空间 除了VS2010中自动添加的命名空间之外:
using System.Collections;
using System.Web.Services;
using System.Web.Script;
using System.Web.Script.Serialization;
using System.Web.Script.Services;
然后我定义以下结构:
public struct RouteAddedResponse {
public int? id;
public int status;
public string message;
}
public struct BoardingZoneDetail
{
public string name;
public string time;
public string quota;
}
public struct DestinationZoneDetail
{
public string name;
}
public struct RouteSerial
{
public string name;
public string rsn;
public Dictionary<string, List<BoardingZoneDetail>> boardingzone;
public Dictionary<string, List<DestinationZoneDetail>> destination;
}
下面是ScriptMethod的示例
// WebMethod expects: Dictionary<string, List<Dictionary<string, RoutSerial>>>;
// Change UseHttpGet to false to send data via HTTP GET.
[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json, UseHttpGet = false)]
public static RouteAddedResponse AddRouteData(List<Dictionary<string, RouteSerial>> route)
{
// Iterate through the list...
foreach (Dictionary<string, RouteSerial> drs in route) {
foreach (KeyValuePair<string,RouteSerial> rs in drs)
{
// Process the routes & data here..
// Route Key:
// rs.Key;
// Route Data/Value:
// rs.Value;
// ...
}
}
return new RouteAddedResponse() { id = -1, status = 0, message = "your message here" };
}
脚本方法AddRouteData
期望通过HTTPPOST获得上述结构。如果您将使用sing GET请求,那么方法参数将是查询字符串变量。
注意事项
在ASP.Net中使用ScriptMethods时,无论使用GET还是POST请求,都需要确保Content-Type
标头设置为:application/json; charset=utf-8
。
希望能有所帮助!