2015-04-07 59 views
0

我有这个阵列由AJAX返回:Ajax响应转换

console.log(res); 
["07Apr|1", "06Apr|3", "05Apr|12", "04Apr|11", "03Apr|0", "02Apr|0", "01Apr|6", "31Mar|0", "30Mar|7", "29Mar|16", "28Mar|5", "27Mar|5", "26Mar|12", "25Mar|9", "24Mar|4", "23Mar|10", "22Mar|16", "21Mar|2", "20Mar|19", "19Mar|22", "18Mar|10", "17Mar|11", "16Mar|10", "15Mar|19", "14Mar|0", "13Mar|4", "12Mar|14", "11Mar|5", "10Mar|26", "09Mar|7", "08Mar|5"] 

我转换透过JSON.stringify此阵:

(变量“资源”是我的ajax - 作为响应如上图所示)

  var obj = []; 
      var daysBack = 30; 
      var objItem = {}; 
      for(var x = 0; x <= daysBack; x++){ 
       var currObj = res[x]; 
       var objCombo = currObj.split("|"); 
       var objItem = "{date: '"+objCombo[0]+"', downloads: '"+objCombo[1]+"'}"; 
       objItem = JSON.stringify(eval("(" + objItem + ")")); 
       obj.push(objItem); 
      } 

当我转储 “目标文件” 到控制台我得到:

console.log(obj); 
["{"date":"07Apr","downloads":"1"}", "{"date":"06Apr","downloads":"3"}", "{"date":"05Apr","downloads":"12"}", "{"date":"04Apr","downloads":"11"}", "{"date":"03Apr","downloads":"0"}", "{"date":"02Apr","downloads":"0"}", "{"date":"01Apr","downloads":"6"}", "{"date":"31Mar","downloads":"0"}", "{"date":"30Mar","downloads":"7"}", "{"date":"29Mar","downloads":"16"}", "{"date":"28Mar","downloads":"5"}", "{"date":"27Mar","downloads":"5"}", "{"date":"26Mar","downloads":"12"}", "{"date":"25Mar","downloads":"9"}", "{"date":"24Mar","downloads":"4"}", "{"date":"23Mar","downloads":"10"}", "{"date":"22Mar","downloads":"16"}", "{"date":"21Mar","downloads":"2"}", "{"date":"20Mar","downloads":"19"}", "{"date":"19Mar","downloads":"22"}", "{"date":"18Mar","downloads":"10"}", "{"date":"17Mar","downloads":"11"}", "{"date":"16Mar","downloads":"10"}", "{"date":"15Mar","downloads":"19"}", "{"date":"14Mar","downloads":"0"}", "{"date":"13Mar","downloads":"4"}", "{"date":"12Mar","downloads":"14"}", "{"date":"11Mar","downloads":"5"}", "{"date":"10Mar","downloads":"26"}", "{"date":"09Mar","downloads":"7"}", "{"date":"08Mar","downloads":"5"}"] 

现在,我想上面的阵列格式从这一变化:

["{"date":"07Apr","downloads":"1"}", "{"date":"06Apr","downloads":"3"}", "{"date":"05Apr","downloads":"12"}", "{"date":"04Apr","downloads":"11"}", ....] 

到一个:

[{"date":"07Apr","downloads":"1"}, {"date":"06Apr","downloads":"3"}, {"date":"05Apr","downloads":"12"}, {"date":"04Apr","downloads":"11"}, ....] 

我的意思是,以消除括在大括号中的对象的双引号。

任何想法,将不胜感激......

+1

只是不字符串化,不是吗? – itamar

+0

如何处理:'.replace('“{”','{'');'和replace('“}”','“}');' – renakre

+1

@erkaner不要尝试自定义的JSON解析 - 你会引入更多的问题,而不是你会解决的。 –

回答

1

您可以解析您从ajax响应收到的数据以创建数组。

var populateArray = function (ajaxResponse) { 
    var newArray = []; 
    ajaxResponse.forEach(function (item, index) { 
     var props = item.split('|'); 
     var obj = { 
      date: props[0], 
      downloads: props[1] 
     }; 
     newArray.push(obj) 
    }); 

    return newArray; 
} 

为了演示,尝试

console.log(populateArray(["07Apr|1", "06Apr|3", "05Apr|12", "04Apr|11", "03Apr|0", "02Apr|0", "01Apr|6", "31Mar|0", "30Mar|7", "29Mar|16", "28Mar|5", "27Mar|5", "26Mar|12", "25Mar|9", "24Mar|4", "23Mar|10", "22Mar|16", "21Mar|2", "20Mar|19", "19Mar|22", "18Mar|10", "17Mar|11", "16Mar|10", "15Mar|19", "14Mar|0", "13Mar|4", "12Mar|14", "11Mar|5", "10Mar|26", "09Mar|7", "08Mar|5"])); 
+0

谢谢你指出一个比我的全新的方法!顺便说一下,它就像一个魅力!结果正是我需要的! –

+0

很高兴它帮助! –

2

字符串化的整个结构,当它准备好了,不段。

请不要使用eval,而应使用JSON.parse()。

 var obj = []; 
     var daysBack = 30; 
     var objItem = {}; 
     for(var x = 0; x <= daysBack; x++){ 
      var currObj = res[x]; 
      var objCombo = currObj.split("|"); 
      var objItem = {date: objCombo[0], downloads: objCombo[1]}; 
      //objItem = JSON.stringify(eval("(" + objItem + ")")); 
      obj.push(objItem); 
     } 
     obj = JSON.stringify(obj); 
+0

我同意,将整个数组串起来好得多,而不是数段......但是,我仍然用双引号将大括号括起来 - 这实际上是我想要消除的!在我的控制台显示[“{”date“:”07Apr“,”downloads“:”1“}”,“{”date“:”06Apr“,”downloads“:”3“}”,“{”date “:”05Apr“,”downloads“:”12“}”,...]现在是:[“{date:'07Apr',downloads:'1'}”,“{date:'06Apr',downloads :'3'}“,”{date:'05Apr',downloads:'12'}“,...] –