2012-03-07 45 views
1

那麼在這種情況下解析json輸出的最佳做法是什麼?我真的需要經過2+(取決於數據的深度)$ .each循環嗎?我對JavaScript有點新鮮。將JSON解析爲數組的最佳實踐

$.getJSON(url, null, function(data) { 
$.each(data, function(i,item){ 
    $.each(item,function(a,b) { 
    if (a == 'poll_date') { 
    dates.push(b); 
    } else if (a == 'prix') { 
    prices.push(parseFloat(b)); 
    } 
    $("#testout").append("A:" + a + " B:" + b + "<br>"); 
    }); 
}); 
}); 

JSON示例:

[ 
{"poll_date":"1990-01-01","prix":"54.60"}, 
{"poll_date":"1990-02-01","prix":"55.40"}, 
{"poll_date":"1990-03-01","prix":"58.90"}, 
{"poll_date":"1990-04-01","prix":"58.90"}, 
{"poll_date":"1990-05-01","prix":"59.30"} 
] 
+0

你的方法看起來不錯。 – Jivings 2012-03-07 15:38:29

+0

你有沒有在第一個嘗試data.item?而不僅僅是數據。 – 2012-03-07 15:38:32

回答

2

如何:

var dates = new Array(); 
var prices = new Array(); 
for (foo in data) { 
    dates.push(data[foo].poll_date); 
    prices.push(data[foo].prix); 
} 

jsFiddle example。另外它使用普通的JavaScript。

+2

謝謝先生,正如我們在我的國家所說的:今晚我會睡得少一點愚蠢。 – David 2012-03-07 17:35:21

1

,你應該能夠做這樣的事情:

$.getJSON(url, null, function(data) { 
$.each(data, function(i,item){ 
    dates.push(item.poll_date); 
    prices.push(parseFloat(item.prix)); 
    $("#testout").append("A:" + item.poll_date + " B:" + item.prix + "<br>"); 
}); 
}); 
+0

幫助我完成另一個項目。感謝這個簡單的例子:) – jasonflaherty 2015-06-30 18:44:30

1

如果JSON.parse()來你的字符串化的數組,你應該自動獲得一個javascript包含你的對象的數組。

+0

數據已經是一個javascript數組(因此.each) – njzk2 2012-03-07 16:00:00