2010-05-09 118 views
23

我有一個函數,將獲得與對象的JSON數組。在函數中,我將能夠遍歷數組,訪問一個屬性並使用該屬性。就像這樣:使用JSON數組與對象與JavaScript

變量,我將傳遞給函數看起來就像這樣:

[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}] 

function test(myJSON) 
{ 
    // maybe parse my the JSON variable? 
    // and then I want to loop through it and access my IDs and my titles 
} 

任何建議,我怎麼能解決呢?

+0

的問題不明確。提供更準確和描述性的代碼。 – 2010-05-09 21:39:50

回答

3

'JSON array containing objects'我猜你的意思是一個包含JSON的字符串?

如果是這樣,您可以使用安全var myArray = JSON.parse(myJSON)方法(本機或包括使用JSON2)或美國國家安全局var myArray = eval("(" + myJSON + ")")。通常應避免評估,但如果您確定內容是安全的,那就沒有問題了。

之後,您只需像往常一樣遍歷數組。

for (var i = 0; i < myArray.length; i++) { 
    alert(myArray[i].Title); 
} 
2

你的問題感覺有點不完整的,但我認爲你在尋找什麼是使你的訪問JSON你的代碼的方式:

如果你有JSON字符串如上,那麼你」 ð只需要做到這一點

var jsonObj = eval('[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]'); 

那麼你就可以像jsonObj訪問這些瓦爾[0] .ID等

讓我知道這是你和I'l都拿到不算什麼我會盡力幫忙

M

+2

你不應該使用eval()來解析JSON,你知道嗎?使用JSON.parse()。 – jpangamarca 2015-06-15 14:55:51

+0

^因爲使用'eval()'你更脆弱,因爲JS函數接受所有JS表達式(https://stackoverflow.com/questions/1843343/json-parse-vs-eval) – Remi 2017-12-12 16:41:30

42

這不是一個單一的JSON對象。你有一個JSON對象數組。您需要首先循環訪問數組,然後訪問每個對象。也許下面的例子開球是有幫助的:

var arrayOfObjects = [{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]; 

for (var i = 0; i < arrayOfObjects.length; i++) { 
    var object = arrayOfObjects[i]; 
    for (var property in object) { 
     alert('item ' + i + ': ' + property + '=' + object[property]); 
    } 
    // If property names are known beforehand, you can also just do e.g. 
    // alert(object.id + ',' + object.Title); 
} 

要了解更多關於JSON,檢查this article

更新:如果JSON對象數組實際傳遞在爲一個普通的字符串,那麼你的確會需要eval()這裏。

var string = '[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]'; 
var arrayOfObjects = eval(string); 
// ... 
+5

記住'if(object.hasOwnProperty (...' – 2010-05-09 21:47:49

+0

+ 1 for eval()更新,浪費了很多時間沒有意識到我需要將字符串轉換爲對象 – 2012-05-14 16:43:02

+1

@PeadarDoyle:不客氣,請確保該字符串不包含用戶或者你可能會冒JS代碼注入的風險,但最好從一開始就傳入一個完整的JS對象,即刪除圍繞字符串的引號(如果有的話) – BalusC 2012-05-14 16:48:58

7

這是您的dataArray

[ 
    { 
     "id":28, 
     "Title":"Sweden" 
    }, 
    { 
     "id":56, 
     "Title":"USA" 
    }, 
    { 
     "id":89, 
     "Title":"England" 
    } 
] 

然後parseJson可用於:

$(jQuery.parseJSON(JSON.stringify(dataArray))).each(function() { 
    var ID = this.id; 
    var TITLE = this.Title; 
}); 
0

@Swapnil Godambe 如果JSON.stringfy被刪除它爲我工作。 那就是:

$(jQuery.parseJSON(dataArray)).each(function() { 
    var ID = this.id; 
    var TITLE = this.Title; 
}); 
-1

var datas = [{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]; 
 
document.writeln("<table border = '1' width = 100 >"); 
 
document.writeln("<tr><td>No Id</td><td>Title</td></tr>"); 
 
for(var i=0;i<datas.length;i++){ 
 
document.writeln("<tr><td>"+datas[i].id+"</td><td>"+datas[i].Title+"</td></tr>"); 
 
} 
 
document.writeln("</table>");