2012-04-06 92 views
0

我在jquery中做了一個ajax請求,並返回響應但不是數組。如何在數組中使用json響應

{"ErrorCode":0,"SeriesSocialStats":{"8970471":{"faves":1,"friendFaves":0,"friendLikes":0,"likes":1,"myFaves":1,"myLikes":0,"seriesId":"8970471"}}} 
{"ErrorCode":0,"SeriesSocialStats":{"184072":{"faves":2,"friendFaves":0,"friendLikes":0,"likes":2,"myFaves":1,"myLikes":0,"seriesId":"184072"}}} 

我要合併上述兩個反應,並創建一個數組是這樣的:

{"faves":1,"friendFaves":0,"friendLikes":0,"likes":1,"myFaves":1,"myLikes":0,"seriesId":"8970471"},{"faves":2,"friendFaves":0,"friendLikes":0,"likes":2,"myFaves":1,"myLikes":0,"seriesId":"184072"} 

請建議如何做到這一點。我想把它放在數組中,並在本地存儲它可能在配置變量get:[],然後訪問有點像config.get[data["seriesId"]]

+0

您可以從更改服務器如何使用JSON回覆開始。首先將該答覆轉換爲數組。你不能像這樣解析JSON。 – Joseph 2012-04-06 12:50:33

+0

但如何做到這一點,因爲我需要跳過'「8970471」:'從每個響應。此外,我無法訪問該部分後的響應,因爲這是seriesId,我不能給它手動 – user850234 2012-04-06 13:02:33

回答

0

你需要你的迴應轉換爲對象的數組

var response = [ 
    {"ErrorCode":0,...}, 
    {"ErrorCode":0,...}, 
    {"ErrorCode":0,...}, 
] 
在實際

jsonResponse = [ 
    {"ErrorCode":0,"SeriesSocialStats":{"8970471":{"faves":1,"friendFaves":0,"friendLikes":0,"likes":1,"myFaves":1,"myLikes":0,"seriesId":"8970471"}}}, 
    {"ErrorCode":0,"SeriesSocialStats":{"184072":{"faves":2,"friendFaves":0,"friendLikes":0,"likes":2,"myFaves":1,"myLikes":0,"seriesId":"184072"}}} 
] 

然後遍歷:

var newArray = [] 
for(var i=0;i<jsonResponse.length;i++){    //loop through items 
    var stats = jsonResponse[i].SeriesSocialStats; 
    for(key in stats){        //loop through "SeriesSocialStats" numbers 
     newArray.push(stats[key]); 
    } 
} 

所以這將是如:

newArray = [ 
    {"faves":1,"friendFaves":0,"friendLikes":0,"likes":1,"myFaves":1,"myLikes":0,"seriesId":"8970471"}, 
    {"faves":2,"friendFaves":0,"friendLikes":0,"likes":2,"myFaves":1,"myLikes":0,"seriesId":"184072"} 
] 
0

你可以做

var obj1 = {"ErrorCode":0,"SeriesSocialStats":{"8970471":{"faves":1,"friendFaves":0,"friendLikes":0,"likes":1,"myFaves":1,"myLikes":0,"seriesId":"8970471"}}}; 

var obj2 = {"ErrorCode":0,"SeriesSocialStats":{"184072":{"faves":2,"friendFaves":0,"friendLikes":0,"likes":2,"myFaves":1,"myLikes":0,"seriesId":"184072"}}}; 

var arr = []; 

arr.push(ob1.SeriesSocialStats); 
arr.push(ob2.SeriesSocialStats); 
+0

我不能創建每個響應的獨立變量,因爲響應很多,我需要我單一的方式推動它在一個數組 – user850234 2012-04-06 12:59:47

0

最佳方式轉換,而不是從對象執行雙重處理數組服務器響應陣列結構,就像約瑟夫提到。