Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 从MVC发送到AgularJS时,JSON在.data中作为大量字符串接收_Angularjs_Json_Asp.net Mvc_Http Get_Jsonresult - Fatal编程技术网

Angularjs 从MVC发送到AgularJS时,JSON在.data中作为大量字符串接收

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");

我从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;
        }
然后,我使用以下方法将其称为角度:

$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);