我有一個Ajax調用(對於HighChartsDB圖表)調用Web服務的WebForm應用程序,它使用WebRequest
在另一個返回JsonResult的應用程序中調用MVC操作。反序列化JSON字符串從MVC行動到C#類
我設法將數據傳回給Ajax調用,但我找回數據不會被解析爲JSON對象,但只是一個字符串。
我的班:由highcharts稱爲
public class CategoryDataViewModel
{
public string name { get; set; }
public List<int> data { get; set; }
public double pointStart { get; set; }
public int pointInterval { get { return 86400000; } }
}
我AJAX功能:
function getBugs(mileId) {
var results;
$.ajax({
type: 'GET',
url: 'Services/WebService.svc/GetData',
contentType: "application/json; charset=utf-8",
async: false,
data: { "mileId": parseInt(mileId) },
dataType: "json",
success: function (data) {
console.log(data);
results = data;
}
});
return results;
}
最後我的WebService
public class WebService : IWebService
{
public string GetData(int mileId)
{
string url = "http://localhost:63418/Home/GetWoWData?mileId=" + mileId;
WebRequest wr = WebRequest.Create(url);
using (var response= (HttpWebResponse)wr.GetResponse())
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
var objText = reader.ReadToEnd();
return objText;
}
}
}
}
有了這個,當我CONSOLE.LOG(數據)在阿賈克斯電話我得到:
[{\"name\":\"Sedan\",\"data\":[30,30,30,30,35],\"pointStart\":1307836800000,\"pointInterval\":86400000},{\"name\":\"Low\",\"data\":[800,800,800,826,1694],\"pointStart\":1307836800000,\"pointInterval\":86400000},{\"name\":\"Medium\",\"data\":[180,180,180,186,317],\"pointStart\":1307836800000,\"pointInterval\":86400000},{\"name\":\"High\",\"data\":[29,29,29,34,73],\"pointStart\":1307836800000,\"pointInterval\":86400000},{\"name\":\"Truck\",\"data\":[6,6,6,6,13],\"pointStart\":1307836800000,\"pointInterval\":86400000},{\"name\":\"SUV\",\"data\":[-172,-172,-172,-179,-239],\"pointStart\":1307836800000,\"pointInterval\":86400000},{\"name\":\"Convertible\",\"data\":[0,0,0,0,-404],\"pointStart\":1307836800000,\"pointInterval\":86400000},{\"name\":\"Limo\",\"data\":[-7,-7,-7,-8,-214],\"pointStart\":1307836800000,\"pointInterval\":86400000}]
我似乎無法設法返回到適當的Json對象。我試着在我的web服務與此將其轉換回我CategoryDataViewModel:
var myojb = new CategoryDataViewModel();
using (var response = (HttpWebResponse)wr.GetResponse())
{
using (var reader = new StreamReader(response .GetResponseStream()))
{
JavaScriptSerializer js = new JavaScriptSerializer();
var objText = reader.ReadToEnd();
myojb = (CategoryDataViewModel)js.Deserialize(objText, typeof(CategoryDataViewModel));
}
}
return myojb;
但後來我得到Type 'Test.CategoryDataViewModel' is not supported for deserialization of an array.
myojb需要重新定義爲List。 –
該死的我實際上已經嘗試過了,但是我遺漏了ajax部分的一個'result = JSON.stringyfy(data)'錯誤......謝謝! :) – LanFeusT