2011-09-20 198 views
0

我有一些JSON具有元素屬性,其中一個JSON元素具有多個數組的值。我已經研究出如何訪問數組,但我不確定如何訪問第二個數組。從JSON訪問多維數組

我也可以知道如何將新數組推送到JSON值。

這裏是我有什麼

$(this).attr({ 
"data-settings": $.toJSON({ nPosX: newPX, nPosY: newPY, oPosX: oldPX, oPosY: oldPY, moves: ["val"]["key"] }) 
}); 

var movesObj = $.parseJSON($(this).attr('data-settings')); 

moves正是數組保存。

感謝先進!

+1

'moves:[「val」] [「key」]'不會做你可能認爲它做的事。它將嘗試訪問'[「val」]'數組的'key'屬性。該屬性不存在,所以它返回'undefined'。因此,這個結果是'moves:undefined'。你究竟想要「移動」結構化?一個數組或數組?有兩個元素的數組? –

+0

如果你執行'movesObj.moves [0]',你可以訪問「val」。 最好和數組的數組。 – PapaSmurf

+0

使用該設置?我懷疑它:http://jsfiddle.net/g7E7C/在任何方面,你絕對應該閱讀[JavaScript中的數組](https://developer.mozilla.org/en/JavaScript/Guide/Predefined_Core_Objects#Array_Object)。如果你想'movesObj.moves [0]'返回'val',那麼它似乎需要一個數組有兩個元素:'moves:[「val」,「key」]'。 –

回答

0

嗯,這似乎並不像一個有效JSON給我。你不能像這樣定義一個JSON。你要麼定義像散招式:

moves: {"val":"key"} 

你訪問它想:moves.val移動[ 「VAL」]

或者你定義像哈希數組招式:

moves: [{"val":"key"}, ...] 

你訪問它,如:移動[0] .VAL移動[0] [ 「VAL」]

如果你想有一個嵌套的散列這樣,你需要將它定義成:

moves: {"val": {"key":"value"}} 

,並獲得它像移動[ 「VAL」] [ 「鑰匙」]moves.val。鍵

+0

我認爲哈希陣列是我正在尋找的,我將如何推動新的哈希陣列進行移動? – PapaSmurf

+0

例如'moves:[{posX:nX,posY:nY,time:0}],[{posX:nX,posY:nY,time:3}] 如何添加第二個數組? – PapaSmurf

+0

不要緊,我會使用我在這裏得到的答案:[http://stackoverflow.com/questions/7492472/how-do-i-add-a-array-to-a-json-object](http:/ /stackoverflow.com/questions/7492472/how-do-i-add-a-array-to-a-json-object) – PapaSmurf

0

您能更具體地瞭解您正在嘗試做什麼嗎?

如果您有嵌套數組,你想從內部陣列的一個訪問值,語法是

myArray["key1"]["key2"] 

myArray.foo.bar 
+0

我試圖從JSON元素'移動'訪問「val」和「key」 – PapaSmurf

+0

您可以編輯問題以包含'moves'數組應該做什麼的一些想法嗎?正如Felix上面所說的,'[「key」] [「val」]'不是你想要做的。 – bdesham