我有一个服务器端REST api,它可以返回任意结构的jsonyfied数据。在客户端,我有一个Angular应用程序。
定义资源:
module.factory('SearchQueries', function ($resource){
return $resource('/instances/searches/:_id', {_id: '@_id'});
})
我尝试从api获取数据后:
$scope.search_queries = SearchQueries.query(null, function(args){
console.log('success: ', args);
for (i in args) {
}
});
客户端接收具有有类结构的数据:
{"2": "serfgserg", "3": "sdfgdfg", "4": "sdgdfhdfghfgh", "5": "sdgdfhdfghfgh"}
但是!在Angular资源的成功函数中,数据的每个符号都是一个元素对象的值。
[{"0":"s","1":"e","2":"r","3":"f","4":"g",
e.t.c
为什么要这样做?如何正确预防或使用它?
如果我从服务器返回一个数组:
res = json.dumps(["sdf", "asdf", "asdf"])
return Response(response=res, mimetype='application/json',
status=status)
别介意我有相同的结果:
[{"0":"s"},{"0":"d"},{"0":"f"},{"0":"a"},{"0":"s"},{"0":"d"},{"0":"f"} // e.t.c
答案 0 :(得分:1)
因为query
需要一个对象数组而不是一个对象,所以会发生这种情况 - 请参阅the ngResource documentation:
'query':{method:'GET',isArray:true}
期望类似:
[{"name":"sdf"}, {"name":"asdf"}, {"name":"asd"}]