JSON 从 MVC 发送到 AgularJS 时在 .data 中收到大量字符串
JSON received as massive string in .data when sent to AgularJS from MVC
我从 Restful API 得到一个 JSON 结果,并确保结果在 MVC 控制器方法中是 JSON,如下所示:
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;
}
然后我在 Angular 中调用它使用:
$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-repeat 通过申请人对象并显示每个字段值。
也不确定是否重要,在调试和检查 C# 方法时,.data 在每个字段名称和值前后都带有“\”,但在浏览器的控制台中查看时检查它们消失了。
我已经成功地将数组从 C# 方法发送到 angular,并且能够通过 .data[0] .data[1] 等进行访问。这是第一次尝试发送实际的 JSON 从 MVC 到 angular 的对象列表。
您应该能够对返回的数据调用 JSON.parse
以将字符串变回对象。试试这个:
JSON.parse(result.data)
您可以使用 angular.fromJson
.
解析 Angular 中的 JSON 字符串
尝试:
$scope.applicationList;
$http.get("/Home/GetApplications").then(function (result) {
var parsedData = angular.fromJson(result.data);
});
或者,为了更好地衡量,在普通 JS 中:
var parsedData = JSON.parse(result.data);
我从 Restful API 得到一个 JSON 结果,并确保结果在 MVC 控制器方法中是 JSON,如下所示:
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;
}
然后我在 Angular 中调用它使用:
$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-repeat 通过申请人对象并显示每个字段值。
也不确定是否重要,在调试和检查 C# 方法时,.data 在每个字段名称和值前后都带有“\”,但在浏览器的控制台中查看时检查它们消失了。
我已经成功地将数组从 C# 方法发送到 angular,并且能够通过 .data[0] .data[1] 等进行访问。这是第一次尝试发送实际的 JSON 从 MVC 到 angular 的对象列表。
您应该能够对返回的数据调用 JSON.parse
以将字符串变回对象。试试这个:
JSON.parse(result.data)
您可以使用 angular.fromJson
.
尝试:
$scope.applicationList;
$http.get("/Home/GetApplications").then(function (result) {
var parsedData = angular.fromJson(result.data);
});
或者,为了更好地衡量,在普通 JS 中:
var parsedData = JSON.parse(result.data);