JSON получен в виде массивной строки в .data при отправке в AgularJS из MVC - PullRequest
0 голосов
/ 11 мая 2018

Я получаю результат JSON от Restful API и гарантирую, что результатом будет JSON в методе контроллера MVC следующим образом:

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 все JSON из вызова API есть, но хранятся в виде длинной строки, сохраняются буквально как ...

data: "[{"Id":"a2ac8e01-3a5d-4110-8afe-2bde09a4f03b","Firstname":"John","Lastname":"Berry" ... etc. etc.

Поэтому я не могу сослаться на эти значения, например, через result.data.Firstname, или повторить ng через объекты-кандидаты и отобразить каждое значение поля.

Также не уверен, что важно, когда при отладке и проверке метода C # .data появляется с «\» перед и после каждого имени и значения поля, но при просмотре в консоли в браузере проверяет, что они пропали.

Мне удалось отправить массивы в angular из C # Method, и я смог получить доступ через .data [0] .data [1] и т. Д., Впервые пытаясь отправить фактический список объектов JSON в angular из MVC ,

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Вы можете проанализировать строку JSON в Angular, используя angular.fromJson.

Попробуйте:

$scope.applicationList;
$http.get("/Home/GetApplications").then(function (result) {
    var parsedData = angular.fromJson(result.data);
});

Или, если хотите, в ванильном JS:

var parsedData = JSON.parse(result.data);
0 голосов
/ 11 мая 2018

Вы должны иметь возможность вызвать JSON.parse для данных, которые вы возвращаете, чтобы превратить строку обратно в объект. Попробуйте это:

JSON.parse(result.data)
...