在asp.net中序列化为JSON
本文关键字:JSON 序列化 asp net | 更新日期: 2023-09-27 18:06:08
我第一次在asp.net中使用JSON
我的WebMethod是这样的
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string Vo_Get(string Action,int ID)
{
Product p= new Product();
DataSet ds= new DataSet();
p.Action = Action;
p.ID= ID;
ds= VoGet_Get(obj);
**string jsonVesselDetails = JsonConvert.SerializeObject(ds, Formatting.None);
return jsonVesselDetails;**
}
在这里我得到我的结果
[
{
"Pinky": 1,
"Ponky": "Breakwater Dockk",
},
{
"Pinky": 2,
"Ponky": "Watson Island Dock",
},
但是当我尝试使用Ajax调用并追加到表时,如果我尝试与结果绑定,它会给出意外令牌U,如果我尝试与result.data绑定,它会给出意外令牌O
最后我发现问题是与序列化,
我的Ajax调用是
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Voyage.aspx/Vo_Get",
data: "{'Action':'Get','ID':'68'}",
dataType: "json",
success: function (data) {
try {
alert("getdata! success" );
Get(data);
} catch (ex) {
alert(ex);
}
},
error: function (msg) {
alert("err: " + error);
}
});
和
可能您也在成功函数中使用相同的变量data
。尝试使用以下命令
success: function (result) {
try {
alert("getdata! success" );
GetVessels(result);
//Rebuild the table
//BuildVesselTaggerInfo();
} catch (ex) {
alert(ex);
}
},
注意,我已经把数据改为结果。
我不知道getvessel期待什么,但尝试:
GetVessels(data.d);
。传递实际数据,而不是整个响应对象。
首先验证您的GetVessles
方法期望的JSON
或数组结构。
您可以通过直接提供VoyageVessel_Get
方法的JSON响应或手动构建它来实现。例如
var data= [
{
"TerminalID": 1,
"TerminalName": "Breakwater Dockk",
"PortID": 1,
"PortName": "Swire Pacific Offshore",
"Column1": "08/03/13",
"Column2": "16/03/13",
"ServiceID": 2
},
{
"TerminalID": 2,
"TerminalName": "Watson Island Dock",
"PortID": 2,
"PortName": "Keppel Offshore",
"Column1": "20/03/13",
"Column2": "23/03/13",
"ServiceID": 2
}];
GetVessels(data);
查看您的GetVessels
是否适用于此对象。如果没有,那么找出它需要什么样的结构(只有你可以这样做),并构建它。
第二,不能直接访问ASP.NET Web-Service
中:success
的响应。
像这样访问:
success: function (data) {
var jsonData= data.d;
GetVessels(jsonData);
}
<标题> 更新如果您的对象包含日期时间字段,请尝试在Serialization
中指定日期格式处理,即
JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings
{
DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
};
string serializedObject= Newtonsoft.Json
.JsonConvert
.SerializeObject(dsVoyages, microsoftDateFormatSettings);
标题>