json.stringify slice数组到word

时间:2013-08-06 02:43:43

标签: angularjs

我使用JSON.stringify(data);返回json

这是我的代码

var data;
programService.query({
    id: $routeParams.id
    }, function (result) {
    data = { 'program': result };
    data= JSON.stringify(data);
    $scope.setPagingData(data,page,pageSize);
    });

$scope.setPagingData = function(data, page, pageSize){
    var pagedData = data.slice((page - 1) * pageSize, page * pageSize);
    $scope.myData = pagedData;
    $scope.totalServerItems = data.length;
    if (!$scope.$$phase) {
        $scope.$apply();
    }
};

json数据

{programId:1, 
 programName:project1, 
 programContent:content1, 
 programStartDate:2012-01-01, 
 templateId: "1"}

,结果将是p,r,o ......

不是programId,1,programName,project1 .....

任何想法?

1 个答案:

答案 0 :(得分:0)

我不确定你要做什么,但是让我在你的代码中指出一些可能指向正确方向的东西。

首先,您的JSON数据(我假设您的意思是服务器中的result

{programId:1, 
programName:project1, 
programContent:content1, 
programStartDate:2012-01-01, 
templateId: "1"}

非常不正常。键和值周围的双引号是正确的JSON格式(数字值不需要引号)。


第二次,假设你的JSON数据确实是你想要的,并期望它在你的回调函数中:

...
    }, function (result) {
      data = {
        'program': result
      };
      ...
    });
...

result STRING (因为JSON只是一种基于文本的序列化格式,并且始终是一个字符串),这意味着

data = {
  'program': result
};

导致data看起来像这样的JS对象:

{ 'program' : '{programId:1, programName:project1, programContent:content1, programStartDate:2012-01-01, templateId: "1"}' }

也许您打算将JSON转换为本机JS对象 ,在这种情况下JSON.parse(result)就是您要找的。

data = {
  'program': JSON.parse(result)
};

data现在看起来像这样的JS对象(假设您的JSON格式正确,否则解析函数将中断):

{
    "program" : {
        "programId" : 1,
        "programName" : "project1",
        "programContent" : "content1",
        "programStartDate" : "2012-01-01",
        "templateId" : "1"
    }
}

第三次,返回回调函数:

...
    }, function (result) {
      ...
      data= JSON.stringify(data);
      $scope.setPagingData(data,page,pageSize);

    });
...

data= JSON.stringify(data);将给定数据转换为 JSON字符串 。如果这是你想要的,那就继续吧!


第四,在您的$scope.setPagingData函数

$scope.setPagingData = function(data, page, pageSize){
    var pagedData = data.slice((page - 1) * pageSize, page * pageSize);
    $scope.myData = pagedData;
    $scope.totalServerItems = data.length;
    if (!$scope.$$phase) {
        $scope.$apply();
    }
};

.slice函数和.length属性都是Array原型的一部分。这意味着如果您传入的data是一个JS对象,.slice将抛出“没有方法切片”错误,.length将返回undefined。