2012-09-13 10 views
0

하자 나는 다음 개체자바 스크립트 JSON 내부 값을 얻을

var o = { "foo" : {"bar" : "omg"} }; 

내가

o["foo"] // return {"bar" : "omg"} 

를 사용하여 키 foo의 가치를 얻을 수 있고 내가 사용 foo 내부 키 bar의 값을 얻을 수 있습니다

o["foo"]["bar"] // return "omg" 

키 값 을안에 넣을 수 있습니까?괄호를 사용하여 [] 번만 사용하십시오.

o["foo.bar"] // not working(

또는

o["foo/bar"] // not working(
+0

'[[foo '] ['bar ']'또는'o.foo.bar'와 함께 무엇이 잘못 되었습니까? –

+1

당신은 그렇게 할 수 없습니다 아니,하지만 당신은 할 수있는'분명히 o.foo.bar' –

+0

당신은 그냥 'OMG'또 다른 방법을 얻을 필요가 있다면 당신이 바로 그것을 요구하지 않을까요? o.foo 속성의 이름을 찾으려면 (bar가 될 것입니다), 맞습니까? – raina77ow

답변

3

작동 개체에 액세스하기위한 문자열을 사용하는 경우는 다음과 같이 할 수있는 getter 함수를 만드는 데 매우 일반적입니다. 덧글에서 :

나는 객체와 문자열 'foo.bar'를 가지고 있는데, 나는 "omg"를 얻고 싶습니다.

var getProp = function (theObject, propString) { 
    var current = theObject; 
    var split = propString.split('.'); 

    for (var i = 0; i < split.length; i++) { 
     if (current.hasOwnProperty(split[i])) { 
      current = current[split[i]]; 
     } 
    } 

    return current; 
}; 

http://jsfiddle.net/MXu2M/

:이은 함께 던져 예를 들어, 당신은 방탄에 원하는 사이트에 그것을 삭제하기 전에 그것을 버프 것입니다.

+0

Thx, 잘 작동합니다. – Ilya

0

같은
Somethong 불행하게도, 당신은 단지 그것을 다른 개체 내부의 객체이기 때문에 o["foo"]["bar"] 또는

0

o.foo.bar 아니, 당신이 o["foo"]["bar"]를 사용해야 사용할 수 있습니다. 당신이 "foo.bar"로 액세스하려면, 당신은 다음과 같이 첫 번째 개체를 생성해야 함을 의미합니다 :

var o = {"foo.bar": "omg"} 
0

o["foo.bar"] 또는 o["foo/bar"]이 예를 들어 유효하지 않습니다. 당신은 깨끗이 표기법 사용할 수 있습니다

var bar = o.foo.bar // bar will contain 'omg' 
+0

왜'-1'입니까? ...... –

0

는 방법이있다, 그러나 나는 이것이 당신이 무엇을 요구입니다 확실하지 않다 : 그것은 비록 위험

eval("o.foo.bar"); 

, 그리고하지 않습니다 []를 사용하지만, 당신이 원하는 것은 그것이

관련 문제