2011-09-20 1 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'를 반환합니다. 따라서이 결과는'이동 : 정의되지 않음 '입니다. 얼마나 정확하게 당신이'움직이는 '구조로 만들고 싶습니까? 배열 또는 배열? 두 요소가있는 배열? –

+0

'movesObj.moves [0]'하면 "val"에 접근 할 수 있습니다. 바람직하게는 배열의 배열. – PapaSmurf

+0

그 설정으로? 나는 그것을 의심한다. http://jsfiddle.net/g7E7C/ 어떤 식 으로든, [JavaScript의 배열] (https://developer.mozilla.org/en/JavaScript/Guide/Predefined_Core_Objects#Array_Object)에 대해 반드시 읽어야한다. moveObj.moves [0]'가'val'을 반환하기를 원한다면 배열'move : [ "val", "key"]'두 개의 원소가 필요합니다. –

답변

0

음, 즉 유효한 아닌 것 같아 내게 JSON. 그런 JSON을 정의 할 수는 없습니다. moves.val 또는 이동 [ "발"]

이 아니면 해시의 배열 등의 이동을 정의를 : 당신이 좋아하는 액세스

moves: {"val":"key"} 

: 당신은 해시와 같은 움직임을 정의하거나

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

당신은 같은 액세스 : 이동 [0] .val 또는 이동 [0] [ "발"].

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

을 그리고 이동과 같은 접근을 [ "발"] [ "키"] 또는 moves.val : 당신이 그와 같은 중첩 된 해시를 원하는 경우

, 당신은 그것을 좋아 정의 할 필요가있다. key

+0

해시의 배열이 내가 찾고있는 것이라고 생각합니다. 새 해시 배열을 어떻게 움직일 것입니까? – PapaSmurf

+0

예 :'이동 : [{posX : nX, posY : nY, 시간 : 0}], [{posX : nX, posY : nY, 시간 : 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 요소'moves'에서 'val'과 'key'에 액세스하려고합니다. – PapaSmurf

+0

'moves'배열에서 수행해야하는 작업에 대한 아이디어를 포함하도록 질문을 편집 해 주실 수 있습니까? 펠릭스가 위에서 말했듯이,''''''''''''''val은 당신이하고 싶은 것이 아닙니다. – bdesham