我送一个JSON HTTP响应,如网络API如下所示,JSON数据存在于response.Content如何在角js中从HttpResponse中提取JSON数据?
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
var LoginDetailsResponse = new LoginDetails { LoginToken = "Token" , LoginDescription = "Desc" };
response.Content =
new ObjectContent<LoginDetails>(LoginDetailsResponse,
new JsonMediaTypeFormatter(), new MediaTypeWithQualityHeaderValue("application/json"));
return response;
而这是发送作为JSON格式的对象是:
public class LoginDetails
{
public string LoginToken { get; set; }
public string LoginDescription { get; set; }
}
而下面的是,我用于发送的请求,并提取内容JSON角js代码:
var Submit = function() {
var httpResponseRef = $http({
url: 'http://wycvwetebx056.com:81/',
method: "GET"
});
httpResponseRef.then(successloginCallBackRef, errorloginCallBackRef, notifyCallbackRef);
};
// when it is a success it call's successloginCallBackRef function
var successloginCallBackRef = function(httpLoginResponseMessage) {
var status = httpLoginResponseMessage.status;
var response = httpLoginResponseMessage.data; // returns everything as a string type.
};
但是httpLoginResponseMessage.data没有像预期的那样返回数据,它似乎包含以下内容。
"StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.JsonContent[LoginDetails.LoginDetailsResponse], Headers:
{
Content-Type: application/json; charset=utf-8
}"
我可以看到,我有json的内容,但我不知道如何提取,而使用角js。
你尝试['JSON.parse'(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)= – adeneo
好吧,也许你的服务器发送它由于某种原因双重编码?如果响应头文件显示的是JSON,则$ http会将其视为这样。否则,您可以使用JSON.parse解析数据,如第一条评论中所述。如果您使用Chrome开发工具,则可以查看“网络”选项卡中返回的响应,以查看它是否是字符串或它是否正确解析。 – SoluableNonagon
@adeneo:伙计们,是的,我也尝试过JSON.parse,但它似乎在抛出'Unexpected token S'错误。我检查了一下,发现如果没有引号,它会抛出该错误。但我并没有发现在开始时明确附加引号的必要性。 – Abhishek