Microsoft Graph API结果在AngularJS中未被视为JSON对象

Microsoft Graph API结果在AngularJS中未被视为JSON对象,angularjs,json,json.net,microsoft-graph-api,azure-functions,Angularjs,Json,Json.net,Microsoft Graph Api,Azure Functions,我正在从Microsoft Graph API获取组信息,结果如下: { "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups(id,displayName,description)", "value": [ { "id": "00000000-0000-0000-0000-000000000000", "description": "Admin", "disp

我正在从Microsoft Graph API获取组信息,结果如下:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups(id,displayName,description)",
  "value": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "description": "Admin",
      "displayName": "Admin"
    },
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "description": "End user",
      "displayName": "EndUser"
    },
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "description": "Administrator",
      "displayName": "Administrator"
    },
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "description": "XXX",
      "displayName": "XXX"
    }
  ]
}
我从服务器返回以下字符串:

return req.CreateResponse(HttpStatusCode.OK, groups);

在客户端的AngularJS 1.6中,它被视为字符串,而不是JSON对象。有人知道可能出了什么问题吗?

发生这种情况是因为您显然是从Web API方法中返回JSON字符串。默认情况下,WebAPI会自动序列化您提供的任何内容。因此,如果您给它一个JSON字符串,该字符串将被重新序列化,这意味着客户端必须将其反序列化两次才能获取该对象。如果您想将预格式化的JSON原封不动地传递给用户,则需要将响应内容显式地创建为字符串,这样它就不会被Web API双重序列化

试着这样做:

HttpResponseMessage response = req.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(groups, Encoding.UTF8, "application/json");
return response;

发生这种情况是因为您显然是从Web API方法中返回JSON字符串。默认情况下,WebAPI会自动序列化您提供的任何内容。因此,如果您给它一个JSON字符串,该字符串将被重新序列化,这意味着客户端必须将其反序列化两次才能获取该对象。如果您想将预格式化的JSON原封不动地传递给用户,则需要将响应内容显式地创建为字符串,这样它就不会被Web API双重序列化

试着这样做:

HttpResponseMessage response = req.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(groups, Encoding.UTF8, "application/json");
return response;