假设我们有这种C#方法:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetEventsJson()
{
Event[] events = new Event[] {
new Event
{
Ref = 1,
Name = "Some Name",
Date = new DateTime(2017, 3, 20, 12, 0, 0),
Description = "Some Description",
Localization = "Localization"
}
};
return Newtonsoft.Json.JsonConvert.SerializeObject(events);
}
我们通过CORS请求调用此Web服务方法。 它返回类似的字符串:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">[{"Ref":1,"Name":"Some Name","Date":"2017-03-20T12:00:00","Description":"Some Description","Localization":"Localization"}]</string>
现在,我正试图在JavaScript中反序列化这个,我试图简单:
var data = jQuery.parseJSON(JSON.stringify(json));
或
var data = jQuery.parseJSON(json);
但它只会通过第二种方法返回错误:
Uncaught SyntaxError: Unexpected token < in JSON at position 0
或者对第一种方法没有任何作用(我不能得到例如data.Description,因为它说它是未定义的)
所以问题是:反序列化C#webservice返回的JSON的正确方法是什么?