我有.NET WCF服務提供REST服務。一切都適用於我,直到我試圖用嵌套對象發送對象。然後我在angularjs中沒有任何東西。我如何使用/訪問嵌套對象進行數據交換?
.NET服務部分:
[OperationContract] // route prefix 'api'
[WebGet(UriTemplate = "users/{id}/privileges", ResponseFormat = WebMessageFormat.Json)]
public PrivilegeSet GetPrivileges(string id)
{
var response = new PrivilegeSet();
List<Role> roles = new List<Role>();
roles.Add(new Role() { RoleId = 1, Name = "Role 1", Active = true });
roles.Add(new Role() { RoleId = 2, Name = "Role 2", Active = true });
roles.Add(new Role() { RoleId = 3, Name = "Role 3", Active = false });
response.Roles = roles;
List<SubRole> subRoles = new List<SubRole>();
subRoles.Add(new SubRole() { SubRoleId = 1, Name = "SubRole 1", RoleId = 1, Active = true });
subRoles.Add(new SubRole() { SubRoleId = 2, Name = "SubRole 2", RoleId = 1, Active = true });
subRoles.Add(new SubRole() { SubRoleId = 3, Name = "SubRole 3", RoleId = 1, Active = false });
response.SubRoles = subRoles;
return response;
}
JSON結構:
{
"Roles": [
{
"Active": true,
"Name": "Role 1",
"RoleId": 1
},
{
"Active": true,
"Name": "Role 2",
"RoleId": 2
},
{
"Active": false,
"Name": "Role 3",
"RoleId": 3
}
],
"SubRoles": [
{
"Active": true,
"Name": "SubRole 1",
"RoleId": 1,
"SubRoleId": 1
},
{
"Active": true,
"Name": "SubRole 2",
"RoleId": 1,
"SubRoleId": 2
},
{
"Active": false,
"Name": "SubRole 3",
"RoleId": 1,
"SubRoleId": 3
}
]
}
Angularjs服務:
angular.module('privilegeService', ['ngResource']).
factory('Privilege', function ($resource) {
return $resource('api/users/:userId/privileges', {userId: '@id'});
});
Angularjs提取部分:
function PrivilegesCtrl($scope, Privilege) {
$scope.privileges = Privilege.query({userId:2}); // privileges remains empty using nested objects, with one level object works fine
...
爲什麼JSON嵌套對象時權限仍爲空?以及如何訪問視圖中的嵌套對象?
有你在任何開發工具類似Firebug或Chrome檢查檢查一下服務器返回? – 2013-02-20 07:18:13
當然,它是JSON結構的一部分。它是服務器響應。 – Fanda 2013-02-20 07:42:57