Angularjs 从MVC发送到AgularJS时,JSON在.data中作为大量字符串接收
我从Restful API获得JSON结果,并确保结果是MVC控制器方法中的JSON,如下所示:Angularjs 从MVC发送到AgularJS时,JSON在.data中作为大量字符串接收,angularjs,json,asp.net-mvc,http-get,jsonresult,Angularjs,Json,Asp.net Mvc,Http Get,Jsonresult,我从Restful API获得JSON结果,并确保结果是MVC控制器方法中的JSON,如下所示: public JsonResult GetApplications() { string appsRAW; HttpWebRequest GETRequest = (HttpWebRequest)WebRequest.Create("http://apiurl.com/Api/Application/FullDetails");
public JsonResult GetApplications()
{
string appsRAW;
HttpWebRequest GETRequest = (HttpWebRequest)WebRequest.Create("http://apiurl.com/Api/Application/FullDetails");
GETRequest.Method = "GET";
GETRequest.Headers.Add("X-ApiKey", "key123");
String username = "username";
String password = "password";
String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password));
GETRequest.Headers.Add("Authorization", "Basic " + encoded);
HttpWebResponse response = GETRequest.GetResponse() as HttpWebResponse;
using (Stream responseStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
appsRAW=reader.ReadToEnd();
}
JsonResult applicationsJSON = Json(appsRAW, JsonRequestBehavior.AllowGet);
return applicationsJSON;
}
然后,我使用以下方法将其称为角度:
$scope.applicationList;
$http.get("/Home/GetApplications").then(function (result) {
console.log(result);
});
然而,在控制台输出的.data中,api调用的所有JSON都存在,但存储为一个长字符串,按字面意思存储为
data: "[{"Id":"a2ac8e01-3a5d-4110-8afe-2bde09a4f03b","Firstname":"John","Lastname":"Berry" ... etc. etc.
因此,我无法通过result.data.Firstname引用这些值,例如,或ng重复应用程序对象并显示每个字段值
也不确定是否重要,在调试和检查C方法时,.data在每个字段名和值之前和之后都会显示\号,但在浏览器的控制台中查看时,它们会消失
我已经成功地从C方法向angular发送了数组,并且能够通过.data[0].data[1]等进行访问。这是我第一次尝试从MVC向angular发送实际的JSON对象列表 您应该能够对返回的数据调用JSON.parse,将字符串转换回对象。试试这个:
JSON.parse(result.data)
您可以使用以下命令以Angular格式解析JSON字符串 尝试: 或者,为了更好的衡量,在vanilla JS中:
var parsedData = JSON.parse(result.data);
当然:如果你不介意的话,我打了那张绿色的小支票:不得不等5分钟;只需返回一个ContentResult——它已经是json了,因此无需使用return json再次对其进行序列化,然后在客户端上使用json.parse再次将其转换回来
var parsedData = JSON.parse(result.data);