2017-07-13 50 views
0

我從微軟圖形API獲取組信息的JSON對象,並將其返回結果爲:微軟圖形API的結果不被視爲在AngularJS

{ 
    "@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對象。有誰知道什麼可能是錯的?

回答

2

發生這種情況是因爲您顯然是從Web API方法中返回JSON字符串。默認情況下,Web API會自動序列化您提供的任何內容。所以,如果你給它一個JSON字符串,那麼這個字符串將會被重新序列化,這意味着客戶端將不得不反序列化它以獲得對象。如果您想通過未經過改動的方式傳遞預格式化的JSON,則需要顯式創建響應內容作爲字符串,以便它不會被Web API雙重序列化。

試試這樣說:

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